我有一個多線程應用程序。我有三個共享資源。不同的線程會同時調用這些資源。我需要爲此提供一個互斥體。一個互斥體是否足夠了,還是應該爲每個資源創建一個互斥體?使用多個互斥鎖時會加速嗎?Ruby和互斥體
Q
Ruby和互斥體
0
A
回答
1
如果資源獨立於彼此,沒有理由使用單個互斥鎖來保護它們。您將會捱餓其他可以安全使用的資源的訪問線程。
如果可能,請爲每個資源使用一個互斥鎖。
性能 - 訪問共享資源的線程更有可能在獨立保護資源的情況下執行得更好,而不是擁有單個共享Mutex - 但這取決於比這更多的因素。
+0
如果線程一次需要獲取多個資源,我懷疑OP是否擔心死鎖? –
+0
在這種情況下[Dining Philosophers](https://en.wikipedia.org/wiki/Dining_philosophers_problem)問題適用,他需要確保線程始終以相同順序獲取和釋放資源上的鎖。 – mcfinnigan
相關問題
- 1. Ruby中的子進程和互斥體
- 2. Node.js和互斥體
- 3. EventQueues和互斥體
- 4. 互斥在Ruby中
- 5. 爲什麼互斥體不需要互斥體(並且該互斥體需要互斥體...)
- 6. 線程和互斥體
- 7. 互斥體機制
- 8. Process :: detach和Process :: wait互斥(Ruby)?
- 9. Ruby on Rails的 - 互斥
- 10. 提升interprocess互斥體vs提升線程互斥體
- 11. 使用Allegro互斥體創建互斥體類
- 12. 在運行時選擇互斥體或虛擬互斥體
- 13. 使用多線程和互斥體時對互斥體的聲明
- 14. 互斥或不互斥互斥?
- 15. C++提升線程和互斥體
- 16. 使用pthreads和互斥體的OpenCV
- 17. OpenXml和無法創建互斥體
- 18. 提升線程資源和互斥體
- 19. Silverlight中的互斥體
- 20. Linux內核互斥體
- 21. Single Cron-Instance /互斥體
- 22. SQLite多線程互斥體
- 23. Windows Phone IsolatedStorageSettings&互斥體
- 24. 互斥體未初始化
- 25. 互斥體如何工作?
- 26. 兩個互斥體condvar
- 27. 如何使用互斥體
- 28. Win32中的互斥體
- 29. 用互斥體重建sem_wait()?
- 30. 分佈式互斥體
沒有一個線程一次只需要多個資源? –
不,一次線程需要一個資源 –