我有一个多线程应用程序。我有三个共享资源。不同的线程会同时调用这些资源。我需要为此提供一个互斥体。一个互斥体是否足够了,还是应该为每个资源创建一个互斥体?使用多个互斥锁时会加速吗?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. 分布式互斥体
没有一个线程一次只需要多个资源? –
不,一次线程需要一个资源 –