解決多執行緒競爭條件——臨界區

代码搬运工#1發表於2024-04-23

如圖所示,黑色表示沒有獲得CPU,綠色表示獲得CPU,假設為單核兩執行緒程情況。
執行緒1開始執行,並進入臨界區,在出臨界區執行過程中到了上下文切換時間。
執行緒2獲得CPU,正常執行一段時間後需要執行至臨界區程式碼,此時,執行緒1位於臨界區。因為不能兩個執行緒同時位於臨界區,所以執行緒2阻塞。
執行緒1獲得CPU,正常執行一段時間後出臨界區,繼續執行一段時間,到了上下文切換時間。
執行緒2獲得CPU,發現執行緒1不在臨界區了,此時進入臨界區執行

相關文章