可以使用sem_trywait()
让你进入死锁或活锁?可以使用sem_trywait()导致死锁
0
A
回答
0
如果您有多个线程,几乎所有函数都可能参与潜在的活锁或死锁(或两者兼有),具体取决于它的使用方式。算法很重要。现在,有一些特定的使用模式可能会或可能不会形成活动或死锁,但是从功能名称来看,很难用任何特定的方式来回答。
0
如果两个线程正在争夺由对方的信号锁定的相同资源,它应该会失败并返回E_DEADLK。这是正确的行为,但您需要检测它并在发生时重试。换句话说,是的,它可能会死锁,但是系统会检测到这个并且失效,而不是让你挂起。
相关问题
- 1. AutoResetEvent.WaitOne()导致死锁
- 2. Javascript Ajax可能导致死锁吗?
- 3. 导致死锁的SQLBulkCopy
- 4. MemoryStream.CopyTo()导致线程死锁
- 5. 如何在concurrent.futures.ThreadPoolExecutor中使用不会导致死锁的锁?
- 6. 只使用关键部分的读/写锁会导致死锁
- 7. 硬件发生“死锁”还是软件导致死锁?
- 8. 我的GetEnumerator会导致死锁吗?
- 9. 线程关闭导致的死锁
- 10. 如何成功导致死锁
- 11. 为什么睡眠(1000)导致死锁?
- 12. pthread_mutex_lock和pthread_cond_wait/signal导致死锁
- 13. WCF服务导致SQL死锁错误
- 14. 此代码是否会导致死锁?
- 15. INSERT操作是否会导致死锁?
- 16. 这怎么会导致死锁?
- 17. assetResourcesForAsset:导致死锁在同一时间
- 18. JxBrowser导致线程死锁120秒
- 19. 导致死锁错误的SQL查询
- 20. 为什么这不会导致死锁
- 21. 经典ASP:“应用程序”全局对象可以导致死锁吗?
- 22. 什么可能导致死锁或以其他方式导致此并发测试不一致失败?
- 23. 使用OpenMP和Eigen导致无限循环/死锁
- 24. 以下SQL语句是否会导致死锁?
- 25. 竞争文件访问可能导致Java死锁吗?
- 26. 中的AccountManager添加帐户可能导致死锁
- 27. 懒惰<T> ExecutionAndPublication - 可能导致死锁的示例
- 28. RCTBridge需要dispatch_sync加载RCTDevLoadingView。这可能会导致死锁
- 29. 为什么嵌套锁不会导致死锁?
- 30. Solr线程锁定(死锁)索引导致索引缓慢
该函数本身不能死锁,因为它不会等待任何东西,但当然在循环中调用它可能会死锁。 – 2012-07-12 03:11:03
@R,你甚至不需要循环 - 只要与另一个非trywait锁进行交互即可。我的观点是,你不能仅仅因为它使用sem_trywait而声明一个没有死/活锁的程序。 – bdonlan 2012-07-12 03:22:07
由于每条指令都会推进进度,所以不会循环(或递归)的程序不会死锁... :-) – 2012-07-12 03:50:52