posix 多线程有感--线程
来源:互联网 发布:微信投票软件 编辑:程序博客网 时间:2024/06/07 07:59
1.进程:资源分配单位(存储器,文件)和CPU调度(分配)单位。
线程:作为CPU调度单位,而进程只作为其资源分配单位。
(1)只拥有必不可少的资源,如:线程状态,寄存器上下文和栈。
(2)具有就绪,阻塞和执行三种基本状态。
2.进程和线程的比较:
(1)地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享。
(2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信。
(3)调度和切换:线程上下文切换比进程上下文切换快得多。
3.进程结束时不会等待其他线程结束,一旦进程结束就不关心线程在做什么。(pthread_exit,pthread_join)
4.一个没有被分离的线程终止时会保留其虚拟内存,包括他们的堆栈和其他系统资源。分离线程意味着通知系统不再需要此线程,允许系统将分配给它的资源回收。
5.如果需要获取线程的返回值,或者需要获知其何时结束,应该调用pthread_join函数。pthread_join函数将阻塞其调用者直到指定线程终止。
6.在当前线程从函数pthread_create中返回以及新线程被调度执行之间不存在同步关系。即新线程可能在当前线程从pthread_create返回之前就运行了。甚至在当前线程从pthread_create返回之前,新线程就可能已经运行完毕。
7.线程通常从启动函数中返回来终止自己。当调用pthread_exit退出线程或者调用pthread_cancel取消线程时,线程在调用完每个清理过程后也将进入终止态。如果线程已经被分离,则它立刻进入下一节——回收;否则,线程处于终止态,它还可以被其他的线程调用pthread_join连接。(这就像unix中的进程已经结束单还没有被一个wait调用回收一样。有时这种线程被称为“僵”线程,因为即使他们已经死了单还存在。僵线程可能会保留其运行时的大部分甚至所有资源。
8.如果有其他线程在等待连接进入终止态的线程,则该其他线程将被唤醒。它将从其pthread_join调用中返回相应的值。一旦pthread_join获得返回值,终止线程就被pthread_join函数分离,并且可能在pthread_join函数返回前被回收。
9.如果使用detachstate属性(设定PTHREAD_CREATE_DETACH)建立线程,或者调用pthread_detach分离线程,则当线程结束时将被立刻回收。如果终止线程没有被分离,则它将一直处于终止态直到被分离(通过pthread_detach)或者被连接(通过pthread_join)。(回收将释放所有线程终止时未释放的系统和进程资源,包括保存线程返回值的内存空间,堆栈,保存寄存器状态的内存空间等)。
- posix 多线程有感--线程
- posix多线程有感--POSIX 线程间的内存可视性
- posix多线程有感--线程高级编程(线程属性pthread_attr_t)
- posix多线程有感--线程高级编程(线程属性函数总结)
- posix多线程有感--线程高级编程(线程内存模式)
- posix多线程有感--线程高级编程(线程堆栈)
- posix多线程有感--同步
- posix多线程有感--API
- posix多线程有感--线程高级编程(条件变量)
- posix多线程有感--线程高级编程(pthread_once)
- posix多线程有感--线程高级编程(pthread_key_t)
- posix多线程有感--线程高级编程(互斥量属性)
- posix多线程有感--线程高级编程(条件变量属性)
- posix多线程有感--线程高级编程(进程的优先级)
- posix多线程有感--线程高级编程(优先级有关)
- posix多线程有感--线程高级编程(条件变量)
- posix多线程有感--自旋锁
- posix多线程有感--自旋锁
- java中三种简单的加密
- 解题报告-HDU 3662 (三维凸包)
- Activity界面的数字时间表
- Android Handler
- Groovy的list和map
- posix 多线程有感--线程
- find 和 grep 的结合使用
- Hadoop命令操作
- 获取 ssh 公钥命令
- 友元简介:友元函数,友元类和友元成员函数
- appledoc相关内容汇总(非原创)
- 【linux】——ubuntu server 12.04重启不能上网的问题
- IIS7 FTP 设置
- Ext.Net 1.x_Ext.Net.Windows的IFrame用法