当一个线程1已经获取了互斥锁对象时,如果线程2试图获取对同一个互斥对象的锁,则线程2将被阻塞。 这里是我的问题: 1. thread2如何知道互斥对象被解锁? 2.将线程2尝试获取锁定在预先设定的时间间隔?有关pthread_mutex_lock的一些问题
0
A
回答
0
这实际上是与操作系统有关的,但通常情况是thread2被暂停并放在由互斥锁维护的等待列表中。当互斥体变为可用时,互斥体等待列表上的线程将从列表中移除并放回到活动线程列表中。操作系统可以像往常一样安排它。 thread2完全静止,直到它可以获取互斥量。
1
我感觉到对互斥体如何工作的误解。当线程2尝试获取已由线程1拥有的互斥体时,尝试接受互斥体的调用不会返回,直到互斥体变为可用(除非您的trylock()变体有超时)。
因此,线程2不需要在那里循环,并继续尝试采取互斥体(除非您使用超时,因此您可以基于其他条件取消互斥体,如取消条件)。
+0
我的解释是OP在询问有关互斥体本身的实现。 – mschaef 2010-06-23 15:26:21
+1
@mschaef:很可能你是对的。根据问题的措辞很难说OP的理解水平。 – 2010-06-23 15:37:40
相关问题
- 1. 关于pthread_mutex_lock和pthread_mutex_unlock的一些问题
- 2. 有关NHibernate的GuidCombGenerator的一些问题
- 3. boost线程pthread_mutex_lock问题
- 4. 有关linux信号的一些问题
- 5. 有关TestComplete的一些问题
- 6. 有关TeamCity的一些问题
- 7. 有关缓存的一些问题
- 8. 有关mexLasso功能的一些问题
- 9. 有关Qt pro-file的一些问题
- 10. 有关posix_memalign的一些问题
- 11. 有关Facebook Score API的一些问题
- 12. 有关UIScrollView的一些问题
- 13. 有关Grails服务的一些问题
- 14. 有关OAuth和Android的一些问题
- 15. 有关$ GOPATH的一些问题
- 16. 有关JavaScriptSerializer的一些问题
- 17. 有关iTextSharp的一些问题
- 18. 一些与IPv6有关的问题
- 19. 有关System.Threading.Timer和Parallel的一些问题
- 20. 有关OpenLayers的一些问题
- 21. 有关SQL组的一些问题
- 22. 有关内存/ malloc的一些问题
- 23. 有关Java的一些基本问题
- 24. 一些问题有关异常处理
- 25. 有关解决multiplier问题的一些问题Spring View Resolvers
- 26. 关于关注WPF的一些问题
- 27. 有关C++开发人员有关C++的一些问题
- 28. 有一些问题 “的console.log”
- 29. 关于iptables的 “-set-xmark” 有些问题
- 30. 关于Perceptron的一些问题
@all 谢谢你们 – lakshman 2010-06-24 05:41:12