一、理解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

最新文章

  1. 通过 listboxitem 查找属于listbox第几条数据
  2. javascript详解系列-函数表达式
  3. SQL Server 查询所有外键子父表关系
  4. UVa 10055 - Hashmat the Brave Warrior
  5. js 实现各种排序
  6. HTML5+NodeJs实现WebSocket即时通讯
  7. 【Unity技巧】Unity中的优化技术
  8. bootstrap在jsp中怎么没有效果?
  9. System.Linq.Dynamic 和Nhibernate
  10. PhpStorm 获取注册码
  11. 第六节 ADO.NET
  12. 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码
  13. 移动触摸事件(touchstart、touchmove和touchend)
  14. C# 控制台程序设置字体颜色
  15. 一步一步学python(四) - 字典
  16. <button>与<input type="button"> 的区别
  17. 三, 练习 python索引 (list和tuple)
  18. Windows 2008 asp.net 配置
  19. as 报错
  20. 安装VS2017后打开项目提示 asp.net 4.0尚未web服务器注册

热门文章

  1. skype网络异常无法登录
  2. CAD专用卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件。
  3. git 提交本地仓库到远程
  4. nignx 代理前端服务
  5. 前端BootStrap框架和django创建项目和app
  6. smartgit 安装
  7. fetch 小分析
  8. Flink写入Redis集群 重写flink-connector-redis包,解决Cluster无法输入密码问题
  9. conda 备份与还原环境
  10. Tomcat 的连接数与线程池