我的程序有2個線程和一個int全局變量。一個線程正在讀取該變量,另一個線程正在寫入該變量。我應該在這種情況下使用互斥鎖。從線程讀取全局變量並從另一個線程寫入該變量
這些函數在我的程序中同時並重復執行2個線程。
void thread1()
{
if (condition1)
iVariable = 1;
else if (condition2)
iVariable = 2;
}
void thread2()
{
if (iVariable == 1)
//do something
else if (iVarable == 2)
//do another thing
}
說,thread1()將分配1給iVariable(比如說,iVariable的舊值爲0)。同時,thread2()函數計算if條件中的(iVariable == 1)表達式。我知道由(iVariable == 1)表達式返回的布爾值是不可預知的。但是我想知道在執行thread1()函數後,iVariable1的值是1還是其他一些垃圾值。 – SRF
這是「我不必擔心的唯一事情」,我在答案中提到。 –
然後沒有什麼可擔心的。沒有任何將互斥鎖鎖定爲不會將垃圾值分配給iVariable的問題。 – SRF