APUE2中在解释为什么需要线程私有数据的原因时,讲到其中的一个原因如下: 有时候需要维护基于每个线程的数据,用线程ID作为索引。因为线程ID不能保证是小而连续的整数,所以不能简单的分配一个线程数据数组,用线程 ID作为数组的索引。即使线程ID确实是小而连续的整数,可能还希望有一些额外的保护,以防止某个线程的数据和其它线程的数据相混淆。 能不能解释下这条原因,我看不明白这和线程私有数据有什么关系啊?
by xiaozhu2007 - C/C++ - 2008-05-03 23:14:05 阅读(1651) 回复(3)
[code]#include
1.谁能帮我解释一下线程私有数据的作用,在什么情况下必须使用线程私有数据才能解决问题? 2.pthread_key_create(pthread_key_t * key,void(destructor)(void*))中第二个参数为空时,系统是不是会调用自己的析构函数来释放内存?如果不为空,应如何实现这个函数才能实现释放内存的作用? 3.书上说在非正常退出线程时,不会调用析构函数,就意味着内存泄漏,有什么办法可以解决?
有关线程私有数据的资料,其中有一例程如下]
执行后大部分都对,但未打印出 echomsg函数的语句
destructor execute in thread xxxx ,param=xxxx
向不通,请帮忙看一下
#include
在UNIX环境高级编程12.6节里边:
例子程序将malloc分配的变量设置为线程私有数据。我想,既然malloc 有自己的锁,是线程安全的,何必还用 pthread_setspecific()把它设置成线程私有的呢?每个线程调用这个函数肯定会得到属于该线程自己的一份内存,对吗?
例子程序如下:
Figure 12.13. A thread-safe, compatible version of getenv
[code]
#include
比如说有同一个类class aaa的两个不同对象:lu1, lu2。
那么lu1的成员函数能不能访问lu2的私有数据成员呢?
我有一个简单的小程序:#include
AIX5.2 原来rootvg有两块盘,hdisk0和hdisk1 重新安装系统,rootvg只用到一块硬盘hdisk0,应该没有毁掉hdisk1的数据,手工把hdisk1强行加入到rootvg,但不知道怎么做才能看到hdisk1的数据,哪位大哥能帮帮忙,万分感谢!!!