当前位置:嗨网首页>书籍在线阅读

11-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

29.10 总结

在多线程程序中,多个线程并发执行同一程序。所有线程共享相同的全局和堆变量,但每个线程都配有用来存放局部变量的私有栈。同一进程中的线程还共享一干其他属性,包括进程ID、打开的文件描述符、信号处置、当前工作目录以及资源限制。

线程与进程间的关键区别在于,线程比进程更易于共享信息,这也是许多应用程序舍进程而取线程的主要原因。对于某些操作来说(例如,创建线程比创建进程快),线程还可以提供更好的性能。但是,在程序设计的进程/线程之争中,这往往不会是决定性因素。

可使用pthread_create()来创建线程。每个线程随后可调用pthread_exit()独立退出。(如有任一线程调用了exit(),那么所有线程将立即终止。)除非将线程标记为分离状态(例如通过调用pthread_detached()),其他线程要连接该线程,则必须使用pthread_join(),由其返回遭连接线程的退出状态。

进阶信息

[Butenhof, 1996]对Pthreads进行了透彻而清晰的阐述。[Robbins & Robbins, 2003]对Pthreads的各方面都有涉及。[Tanen-baum, 2007]对线程概念的介绍更具理论化,涵盖主题包括互斥量(mutex)、临界区(critical region)、条件变量以及死锁(deadlock)检测及规避。[Vahalia, 1996]提供了线程实现的背景知识。