使用sem_trywait()
可以让你陷入僵局或活锁吗?
答案 0 :(得分:0)
如果您有多个线程,几乎所有函数都可以参与潜在的活锁或死锁(或两者),具体取决于它的使用方式。算法很重要。现在,某些使用sem_trywait
的特定模式可能会或可能不会形成实时或死锁,但仅从功能名称来看,很难以任何特异性回答。
答案 1 :(得分:0)
如果两个线程争用由彼此的信号量锁定的相同资源,它应该与E_DEADLK失败。这是正确的行为,但您需要检测它并在发生时重试。换句话说,是的,它可以死锁,但是系统会检测到这个并且失败了,而不是让你停下来。