why pthread
开销
内存共享于同步
调度和协同合作
- CPU与I/O的重叠协作:例如,一个程序可能分多段对I/O进行长操作,当一个线程正在等待一个I/O系统调用完成时,CPU可以用其它线程进行现有的密集工作;
- 优先级/实时调度:可预定更重要的任务取代或者中断低优先级的任务;
- 异步事件处理:一些不确定次数和持续时间的服务事件是交叉执行的任务。例如,Web服务器可以在应答前一个传输数据的请求时候,处理新的数据请求。
- 总的来说,Unix环境里的线程有如下特点:
- 它生存在进程中,并使用进程资源;
- 拥有它自己独立的控制流,前提是只要它的父进程还存在,并且OS支持它;
- 它仅仅复制可以使它自己调度的必要的资源;
- 它可能会同其它与之同等独立的线程分享进程资源;
- 如果父进程死掉那么它也会死掉——或者类似的事情;
- 它是轻量级的,因为大部分的开支已经在它的进程创建时完成了。
- 因为在同一进程内的线程分享资源,所以:
- 一个线程对共享的系统资源做出的改变(例如关闭一个文件)会被所有的其它线程看到;
- 指向同一地址的两个指针的数据是相同的;
- 对同一块内存进行读写操作是可行的,但需要程序员作明确的同步处理操作。
implementation
fork vfork clone pthread_create
usage and API
create
destory
synchronization
mutex
wait
join
http://www.cnblogs.com/blueclue/archive/2010/07/16/1779024.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/
POSIX线程