我正在編寫一個C線程並且在所有線程中共享一個變量。獲取這個變量的最簡單方法是什麼?我找不到任何小型庫只是爲了鎖定在UNIX中。在UNIX C程序上獲取共享變量鎖定的最簡單方法是什麼?
任何建議如何做到這一點?
謝謝,Boda Cydo。
我正在編寫一個C線程並且在所有線程中共享一個變量。獲取這個變量的最簡單方法是什麼?我找不到任何小型庫只是爲了鎖定在UNIX中。在UNIX C程序上獲取共享變量鎖定的最簡單方法是什麼?
任何建議如何做到這一點?
謝謝,Boda Cydo。
有pthread_mutex_lock,如果你已經使用pthreads。
快速例如,當counter
是共享變量和mutex
是pthread_mutex_t
類型的互斥鎖變量:
/* Function C */
void functionC()
{
pthread_mutex_lock(&mutex);
counter++;
pthread_mutex_unlock(&mutex);
}
有一個廣泛多種方式來做到這一點,我鼓勵你去探索他們所有,但一個好的起點是mutex implementation in pthreads,其中有幾件事情去爲它:並行線程可以用很多平臺,它的well-designed。
不能鎖定的變量。作爲深入研究的主題,STM是一個很有前途的候選人,但沒有人寫過使用它的操作系統。
不,您只能阻止試圖訪問該變量的代碼。通常使用互斥量完成。