发布时间:2012-12-12 22:31:29
原文链接:http://blog.163.com/yangfan_407/blog/static/127950654201012434648971/这篇文章主要从一个 Linux 下一个 pthread_cancel 函数引起的多线程死锁小例子出发来说明 Linux 系统对 POSIX 线程取消点的实现方式,以及如何避免因此产生的线程死锁。目录: 1. 一个 pthread_cancel 引起的线程死锁小例子 2. 取消点(Cancellation Point) 3. 取消类型(Cancellation Type) 4. Linux 的取消点实现 5. 对示例函数进入死锁的解释 6......【阅读全文】
发布时间:2012-12-12 16:29:38
1.为什么需要线程私有数据:原因一:有时候需要维护基于每个线程的数据,用线程ID作为索引。因为线程ID不能保证是小而连续的整数,所以不能简单的分配一个线程数据数组,用线程ID作为数组的索引。即使线程ID确实是小而连续的整数,可能还希望有一些额外的保护,以防止某个线程的数据和其它线程的数据相混淆。原因二:可以让基于进程的接口适应多线程环境,比如errno,线程出现以前errno被定义成进程环境中全局可访问的整数,线程出现以后,为了让线程也能使用那些原本基于进程的系统调用和库例程,errno被重新定义成线程私有数据。(参考APUE2)2.进程中的所有线程都可以访......【阅读全文】