hce_kmu
112年
計算機概論與程式設計
第 8 題
Which of the followings is an example of a race condition in a multi-threaded program?
- A A thread waiting indefinitely for a resource.
- B A deadlock caused by two threads trying to acquire each other's locks.
- C Two threads executing concurrently and attempting to access shared data without synchronization.
- D A thread executing multiple times when it should only execute once.
- E None of the above.
思路引導 VIP
想像兩個人正在共用同一本筆記本記錄數字。如果兩個人都「同時」看到目前的數字是 10,並各自在心裡完成了加 1 的動作,接著再先後把結果寫回筆記本,最後筆記本上的數字會變成多少?這個結果與我們預期的「每個人都貢獻了一次加法」有什麼落差?是什麼原因導致了這種結果的不確定性呢?
🤖
AI 詳解
AI 專屬家教
恭喜你答對了!這說明你對於多執行緒環境中的資源競爭問題有著非常精確的掌握。選取 (C) 選項反映出你清楚理解「同步機制」在並行運算中的核心地位。
競態條件的本質與成因
競態條件 (Race Condition) 的核心在於程式的最終執行結果,取決於多個執行緒(Threads)之間不可預測的執行順序或時間點。當多個執行緒同時存取(Access)同一塊共享資料 (Shared Data),且在沒有適當的同步 (Synchronization) 控制(如互斥鎖或號誌)的情況下進行讀寫,就會導致資料的不一致性。這就像兩個人同時想修改同一個銀行帳戶餘額,若兩者同時讀取到舊的數值並進行修改,最後存回的結果將會覆蓋掉另一方的更動,產生錯誤的計算結果。
▼ 還有更多解析內容