1. 程式人生 > >【C/C++多執行緒程式設計之十】pthread執行緒私有資料

【C/C++多執行緒程式設計之十】pthread執行緒私有資料

#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;
}