15-总结
33.7 总结
不要将线程与信号混合使用,只要可能多线程应用程序的设计应该避免使用信号。如果多线程应用必须处理异步信号的话,通常最简洁的方法是所有的线程都阻塞信号,创建一个专门的线程调用sigwait()函数(或者类似的函数)来接收收到的信号。这个线程就可以安全地执行像修改共享内存(处于互斥量的保护之下)和调用非异步信号安全的函数。
一般有两种有效的Linux线程实现:LinuxThreads和NPTL。LinuxThreads多年以来一直为Linux使用,但是很多方面并不遵循SUSv3的标准,而且已经过时。全新的NPTL实现更接近SUSv3标准并且提供更优的性能,现今的Linux发布也都提供这种实现。
更多的信息
请参考列于29.10节的更多的信息来源。
LinuxThreads的作者编写了实现文档,可以在如下地址找到:http://pauillac.inria.fr/~xleroy/linuxthreads/。NPTL实现在如下的论文(有些过时)中有所描述:http://people.redhat.com/drepper/nptl-design.pdf。