标签:线程
线程相当于进程的一个执行流,多个线程共享同一进程的地址空间以及共享以下进程资源和环境:
1. 文件描述符表
2. 每种信号的处理方式(SIG_IGN、SIG_DFL或者自定义的信号处理函数)
3. 当前工作目录
4. uid、gid
线程独立的资源:
1. 线程id
2. 上下文,包括各种寄存器的值、程序计数器和栈指针
3. 栈空间
4. errno变量
5. 信号屏蔽字
6. 调度优先级
线程与进程的比较:
调度:线程是系统调用和分派的基本单位,而进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。但从一个进程中的线程切换到两一个进程中的线程时,会引起进程的切换。
并发性:不仅进程间可以并发执行,一个进程中的多个线程之间也可以并发执行。多线程的并发性高。
拥有资源:进程可以拥有资源,是系统拥有资源的一个基本单位。而一般情况下,线程自己不拥有资源(也有一点必不可少的资源,如上面的线程独立的资源),但它可以访问其隶属进程的资源。
系统开销:进程的开销比线程的开销大。
地址空间:同一进程的多个线程共享该进程的地址空间,而进程有自己独立的地址空间。
通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信。
运行:每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
标签:线程
原文地址:http://fengbaoli.blog.51cto.com/10538178/1765372