Linux的进程和线程关系
一、理解Linux的进程,线程,PID,LWP,TID,TGID
进程是资源分配的基本单位,线程是调度的基本单位
进程是资源的集合,这些资源包括内存地址空间,文件描述符等等,一个进程中的多个线程共享这些资源。
CPU对任务进行调度时,可调度的基本单位 (dispatchable entity)是线程。如果一个进程中没有其他线程,可以理解成这个进程中只有一个主线程,这个主进程独享进程中的所有资源。
进程的个体间是完全独立的,而线程间是彼此依存,并且共享资源。多进程环境中,任何一个进程的终止,不会影响到其他非子进程。而多线程环境中,父线程终止,全部子线程被迫终止(没有了资源)。
上述第一点说明是最基础的,也是最重要的。
参考链接:https://www.cnblogs.com/wipan/p/9488318.html
二、查看进程、线程的方法
在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作。
在 pthread 库中有函数:
pthread_t pthread_self(void);
1
它返回一个 pthread_t 类型的变量,指代的是调用 pthread_self 函数的线程的 “ID”。
怎么理解这个“ID”呢?
这个“ID”是 pthread 库给每个线程定义的进程内唯一标识,是 pthread 库维持的。
由于每个进程有自己独立的内存空间,故此“ID”的作用域是进程级而非系统级(内核不认识)。
其实 pthread 库也是通过内核提供的系统调用(例如clone)来创建线程的,而内核会为每个线程创建系统全局唯一的“ID”来唯一标识这个线程。
这个系统全局唯一的“ID”叫做线程PID(进程ID),或叫做TID(线程ID),也有叫做LWP(轻量级进程=线程)的。
参考链接:https://blog.csdn.net/test1280/article/details/87974748
最新文章
- 通过 listboxitem 查找属于listbox第几条数据
- javascript详解系列-函数表达式
- SQL Server 查询所有外键子父表关系
- UVa 10055 - Hashmat the Brave Warrior
- js 实现各种排序
- HTML5+NodeJs实现WebSocket即时通讯
- 【Unity技巧】Unity中的优化技术
- bootstrap在jsp中怎么没有效果?
- System.Linq.Dynamic 和Nhibernate
- PhpStorm 获取注册码
- 第六节 ADO.NET
- 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码
- 移动触摸事件(touchstart、touchmove和touchend)
- C# 控制台程序设置字体颜色
- 一步一步学python(四) - 字典
- <;button>;与<;input type=";button";>; 的区别
- 三, 练习 python索引 (list和tuple)
- Windows 2008 asp.net 配置
- as 报错
- 安装VS2017后打开项目提示 asp.net 4.0尚未web服务器注册