執行緒私有資料的個人理解

2021-06-20 02:30:15 字數 366 閱讀 4809

理解1:函式 int pthread_setspecific(pthread_key_t key, const void *value); 

value進行繫結,以後各個執行緒執行void *pthread_getspecific(pthread_key_t key)時(相同的key),pthread_getspecific返回的便是各個執行緒之前定義的不同的value指標位址。

理解2:int phread_once(pthread_once_t *onceptr, vid(*init)(void))

若有執行緒1,執行緒2都呼叫phread_once,先呼叫的phread_once會執行init函式,後呼叫的phread_once會立即返回。不執行引數其中的init函式。

執行緒特定 私有 資料

簡單的講,執行緒特定 私有 資料是每個執行緒的區域性變數,更改執行緒a中的執行緒特定 私有 資料,並不會影響到執行緒b中相對應的執行緒特定 私有 資料。常見的errno就是執行緒特定 私有 資料,每個執行緒重置errno的操作並不會影響程序中其他執行緒的errno值。下面介紹下執行緒特定資料的使用技...

執行緒的私有資料(TSD)

我們知道 乙個程序內的所有執行緒繼承其資料與環境變數,共享資料空間,但是有時候我們需要有的執行緒擁有獨屬於其自己的資料變數,讓其只在某個執行緒內有效,比如最常見的errno,每個執行緒出錯的原因大不相同。這個時候就需要建立執行緒的私有資料 tsd 了 執行緒的私有資料可以被其他函式訪問,但拒絕被其他...

執行緒控制 私有資料

執行緒私有資料採用了一種被稱為一鍵多值的技術,即乙個鍵對應多個數值。訪問資料時都是通過鍵值來訪問,好像是對乙個變數進行訪問,其實是在訪問不同的資料。使用執行緒私有資料時,首先要為每個執行緒資料建立乙個相關聯的鍵。在各個執行緒內部,都使用這個公用的鍵來指代執行緒資料,但是在不同的執行緒中,這個鍵代表的...