调用时,将使用 pthread_setspecific () 向析构函数例程传递与键绑定的值。 C++的特殊行为:由于 C 和C++链接约定不兼容,因此 pthread_key_create () 无法接收C++函数指针作为启动例程函数指针。如果尝试将C++函数指针传递给 pthread_key_create () ,那么编译器会将其标记为错误。 可以通过将 C 或C++函数声明为 ...
l 调用pthread_key_create() 来创建该变量。该函数有两个参数,第一个参数就是上面声明的pthread_key_t变量,第二个参数是一个清理函数,用来在线程释放该线程存储的时候被调用。该函数指针可以设成 NULL ,这样系统将调用默认的清理函数。 l 当线程中需要存储特殊值的时候,可以调用pthread_setspcific() 。该函数有...
Prototype: int pthread_key_create(pthread_key_t *key, void (*destructor) (void *));#include <pthread.h> pthread_key_t key; int ret; /* key create without destructor */ ret = pthread_key_create(&key, NULL); /* key create with destructor */ ret = pthread_key_create(&key, ...
nt pthread_key_delete(pthread_key_tkey);用来删除一个键,删除后,键所占用的内存将被释放。注销一个TSD,这个函数并不检查当前是否有线程正使用该TSD,也不会调用清理函数(destr_function), 而只是将TSD释放以供下一次调用pthread_key_create()使用。需要注意的是,键占用的内存被释放。与该键关联的线程数据所占...
pthread_key_create子例程创建特定于线程的数据密钥。 该密钥在进程中的所有线程之间共享,但每个线程都有与该密钥关联的特定数据。 特定于线程的数据是空指针,最初设置为NULL。 应用程序负责确保对每个请求的密钥仅调用此子例程一次。 例如,可以通过在创建其他线程之前调用子例程或使用一次性初始化工具来完成此操作。
The pthread_key_create() function creates a thread-specific data key visible to all threads in the process. Key values provided by pthread_key_create() are opaque...
不论哪个线程调用了 pthread_key_create(),所创建的 key 都是所有线程可以访问的,但各个线程可以根据自己的需要往 key 中填入不同的值,相当于提供了一个同名而不同值的全局变量(这个全局变量相对于拥有这个变量的线程来说)。 注销一个 TSD 使用 pthread_key_delete() 函数。该函数并不检查当前是否有线程正在使...
1. 当调用pthread_key_create时,该函数首先生成一个全局唯一的键值,即获取一个可以唯一标识该线程特定数据的标识符。 2.然后,该函数会在进程的线程特定数据表中注册该键值。线程特定数据表存储了当前进程中所有线程的线程特定数据。 3.接下来,该函数会为每个现有的线程分配一个存储该线程特定数据的空间,这个空间可以...