假設我們有一個使用郵箱的消息傳遞系統。當發送到一個完整的郵箱或試圖從一個空郵箱接收時,一個進程不會阻塞,而是會得到一個錯誤代碼。該過程通過反覆嘗試,一次又一次地響應錯誤代碼,直到成功。這是否會導致競爭狀態?這種情況會導致競爭狀態嗎?
0
A
回答
0
首先,我推薦檢查一下race condition的含義。
如果郵箱系統在接收/檢索電子郵件時處理「原子性」,則沒有競爭條件。您的應用可能會一直循環嘗試檢索郵件,但這不是競爭條件。
現在,我們假設郵箱系統不使用任何類型的鎖定機制。如果同時嘗試閱讀是否存在新消息,則會有新消息到達該郵箱,您可能會讀取未完成的消息,因爲該消息仍然到達。
在最好的情況下你未完成的消息,但通常發生崩潰,因爲無效指針等
0
您描述本身並不會導致一場比賽的情況下,雖然你採取的行動對錯誤的響應可以例如將「檢測到該郵箱是空的」消息推送到空郵箱。從兩個線程做到這一點,你可以很容易地收到兩封郵件。
相關問題
- 1. 在春天,非注入場會導致競爭狀態嗎?
- 2. AsyncTask中的doInBackground可能會導致競爭狀態嗎?
- 3. 代碼會產生競爭狀態嗎?
- 4. 在這種情況下,ArrayList是否會導致競態條件或死鎖?
- 5. ManualResetEvent - 這裏會出現競爭狀況嗎?
- 6. 設置StreetViewPanorama的兩個屬性會導致競爭狀態?
- 7. 此代碼是否會導致競爭狀態?
- 8. OpenMP競爭狀態?
- 9. 這種情況會導致內存泄漏嗎?
- 10. 如何通過readdir/inotify避免這種競爭狀態?
- 11. 導致競爭狀態的長時間運行方法
- 12. TCP端口競爭狀態?
- 13. 避免競爭狀態
- 14. 競爭狀態的例子
- 15. 在iOS和Cocoa Touch上,touchesBegan和timerFired會有競爭狀態嗎?
- 16. 在這種情況下「不配置StreamWriter」是否會導致memoryLeak?
- 17. 交易中避免競爭狀況
- 18. 在這種情況下你真的需要無狀態會話bean嗎?
- 19. 爲什麼在這個無鎖棧類中'刪除'節點會導致競爭狀態?
- 20. 如何防止這種競爭條件?
- 21. jquery - 防止這種競爭條件
- 22. 如何避免這種競爭條件?
- 23. 如何處理這種競爭條件?
- 24. 如何解決這個網絡競爭狀況?
- 25. glDisplayFunc(RenderScene)回調會在下面的代碼中導致爭用情況嗎?
- 26. Verilog:以下代碼是否會造成競爭狀況?
- 27. 的Javascript競爭狀態的問題
- 28. Laravel可能的競爭狀態?
- 29. Hazelcast EntryListener,如何避免競爭狀態?
- 30. 這段代碼有競爭條件嗎?
無延遲循環,等待發生某些事件(例如郵箱中存在郵件),稱爲「繁忙等待」。這不是一種競爭條件,但它仍然是不受歡迎的。 – Buhb