我经历了http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_wait.html的文档,但没有明确提及。任何及时的回应将非常感激。2个pthread条件变量可以共享相同的互斥量吗?
13
A
回答
17
是的。如果你有单独的条件你想等待,这有时是一个好主意。例如,你可能有一个队列和条件变量,用于“不满”和“不为空”等等......有人将数据放在队列中等待“不满”。有人从队列中取数据等待“不空”。他们都使用相同的互斥量。
21
是的。这是常见的初步实践:
典型的例子:
mutex queue_mutex;
cond queue_is_not_full_cond;
cond queue_is_not_empty_cond;
push()
lock(queue_mutex)
while(queue is full)
wait(queue_is_not_full_cond,queue_mutex);
do push...
signal(queue_is_not_empty_cond)
unlock(queue_mutex)
pop()
lock(queue_mutex)
while(queue is empty)
wait(queue_is_not_empty_cond,queue_mutex);
do pop...
signal(queue_is_not_full_cond)
unlock(queue_mutex)
+1
+1代表伪码 – Fanatic23 2010-10-31 07:06:07
相关问题
- 1. 条件变量和共享互斥
- 2. Android中的进程共享互斥锁和条件变量
- 3. pthread进程共享互斥死锁
- 4. boost进程间共享互斥和boost进程间条件变量共享互斥
- 5. GDB可以显示每个线程持有的pthread互斥量列表吗?
- 6. HAML&SASS/COMPASS:可以共享变量吗?
- 7. 使用互斥作为条件变量
- 8. 在C++ 98互斥锁中锁定变量共享数据互斥锁
- 9. Posix Pthread互斥
- 10. pthread互斥体在共享内存中是否可以跨线程工作?
- 11. pthread和条件变量
- 12. 如何共享一组pthread的互斥锁?
- 13. 将非互斥变量重新编码为互斥变量
- 14. 不能共享pthread之间的变量,值是不同的
- 15. C++共享互斥量和类实例的11个线程
- 16. 如何在一个类的不同实例之间共享一个互斥量?
- 17. 如何共享PHP变量在2个不同的PHP文件
- 18. 如何使用pthread互斥处理共享资源
- 19. 使用互斥量后程序仍然崩溃(我可以在同一线程中使用互斥量吗?)
- 20. 共享变量的争用条件
- 21. 两个project.json文件可以共享相同的代码库吗?
- 22. 写一个互斥的共享资源
- 23. 使用互斥体的Pthread同步
- 24. 使用互斥锁的pthread同步
- 25. 在2个ViewControllers中共享变量
- 26. 1字节共享资源上的互斥量
- 27. std ::共享内存中的互斥量不工作
- 28. 管理共享内存中的互斥量
- 29. Tensorflow:共享可变张量
- 30. 在2线程的情况下有条件变量和互斥锁还是只是互斥锁更好?
非常感谢。任何相关链接? – Fanatic23 2010-10-31 06:55:05
谷歌这个例子:http://cs.wmich.edu/~jjwillia/10.spring/cs4540/asgn2/pthreads-pro-con – xscott 2010-10-31 06:57:30
很晚评论,但使用2个condvars与一个互斥实际上是建议的做法例如排队情况,请参阅Butenhof'使用Posix线程编程'。 – 2017-02-24 08:40:49