【C/C++多執行緒程式設計之十】pthread執行緒私有資料
阿新 • • 發佈:2019-02-05
#include #include #include #include #pragma comment(lib, "pthreadVC2.lib") //必須加上這句 pthread_key_t key; pthread_mutex_t mutex; pthread_t tid1,*p1; pthread_t tid2,*p2; void * child1(void *arg) { p1=&tid1; pthread_setspecific(key,p1); //將執行緒id寫入執行緒私有資料 p1=(pthread_t *)pthread_getspecific(key); //讀取執行緒私有資料 printf("執行緒child1 的私有資料: %d\n",*p1); return NULL; } void * child2(void *arg) { p2=&tid2; pthread_setspecific(key,p2); //將執行緒id寫入執行緒私有資料 p2=(pthread_t *)pthread_getspecific(key); //讀取執行緒私有資料 printf("執行緒child2的私有資料:%d",*p2); Sleep(500); return NULL; } int main(void) { pthread_key_create(&key,NULL); //建立執行緒私有資料 pthread_create(&tid1,NULL,child1,NULL); pthread_create(&tid2,NULL,child2,NULL); Sleep(100000); pthread_key_delete(key); //銷燬執行緒私有資料 return 0; }