[英]Race condition with multiple threads and mutex locks
int iGlobe = 0;
...
void thread1Func()
{
Lock(&Mutex1);
if(iGlobe == 0) //step-1
someaction();
}
...
void thread2Func()
{
Lock(&Mutex2);
iGlobe = 5; //step-2
}
假設,
1)線程1執行步驟1並進入睡眠狀態
2)同時,Thread2執行步驟2並更改iGlobe的值
如何克服這種情況?
對給定數據的所有訪問都必須在同一個互斥鎖上進行同步,否則不會產生“互斥”效應。 因此,要修復您的代碼,請將thread2Func更改為Lock(&Mutex1)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.