一句話講明白 pthread_key_t和pthread_key_create()

pthread_key_t和pthread_key_create()詳解


下面說一下線程中特有的線程存儲, Thread Specific Data 。線程存儲有什麼用了?他是什麼意思了?大家都知道,在多線程程序中,所有線程共享程序中的變量。現在有一全局變量,所有線程都可以使用它,改變它的值。而如果每個線程希望能單獨擁有它,那麼就需要使用線程存儲了。表面上看起來這是一個全局變量,所有線程都可以使用它,而它的值在每一個線程中又是單獨存儲的。這就是線程存儲的意義。


下面說一下線程存儲的具體用法。

1. 創建一個類型爲 pthread_key_t 類型的變量。

2. 調用 pthread_key_create() 來創建該變量。該函數有兩個參數,第一個參數就是上面聲明的 pthread_key_t 變量,第二個參數是一個清理函數,用來在線程釋放該線程存儲的時候被調用。該函數指針可以設成 NULL ,這樣系統將調用默認的清理函數。

3. 當線程中需要存儲特殊值的時候,可以調用 pthread_setspcific() 。該函數有兩個參數,第一個爲前面聲明的 pthread_key_t 變量,第二個爲 void* 變量,這樣你可以存儲任何類型的值。

4. 如果需要取出所存儲的值,調用 pthread_getspecific() 。該函數的參數爲前面提到的 pthread_key_t 變量,該函數返回 void * 類型的值。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章