线程

进程是资源分配的基本单位,而线程而是CPU调度的基本单位。
进程启动,就会创建一个线程,就是主线程,主线程可以通过系统调用pthread_create来创建其他线程。

进程中所有的线程都有自己的线程栈,用于保存自己的私有数据;但是统一进程的多个线程是共享进程的资源,包括数据段、代码段、堆、文件描述符等。

线程拥有id,成为TID。TID只保证在进程内部的唯一。

多线程的关系

不同于进程,有父子关系;同一个进程中的多个线程之间是平等的,不存在层级关系。任何线程都可以对统一进程中的其他线程进行某些管理操作:

  • 创建线程:通过系统调用pthread_create来创建新线程,获得新线程的TID。
  • 终止线程:通过系统调用pthread_cancel请求指定TID的线程停止执行,这个操作其实就是通知,听不听话、什么时候听话取决于另一线程的实现。
  • 连接已终止的线程:通过系统调用pthread_join,等待指定线程ID的线程终止,并且获得指定线程的返回值。
  • 分离线程:使得指定TID的线程不可以被连接,目的在于让操作系统内核在目标线程终止时,能够自动清理和销毁。通过系统调用pthread_detach来完成。

线程状态

线程状态
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux线程概述 了解如何正确运用线程是每一个优秀程序员必备的素质。 线程类似于进程。如同进程,线程由内核按时间...
    batbattle阅读 6,662评论 0 5
  • 线程 在传统操作系统中,每个进程有一个地址空间和一个控制线程。事实上这几乎就是进程的定义。不过经常存在在同一个地址...
    伊恩的道歉阅读 6,653评论 0 6
  • 转自:Youtherhttps://www.cnblogs.com/youtherhome/archive/201...
    njukay阅读 5,515评论 0 52
  • 线程 在linux内核那一部分我们知道,线程其实就是一种特殊的进程,只是他们共享进程的文件和内存等资源,无论如何对...
    大雄good阅读 3,863评论 0 2
  • 线程基础 线程是进程的一个执行单元,执行一段程序片段,线程共享全局变量;线程的查看可以使用命令或者文件来进行查看;...
    秋风弄影阅读 4,055评论 0 0