可以使用sem_trywait()导致死锁

时间:2012-07-12 03:00:42

标签: c deadlock livelock

使用sem_trywait()可以让你陷入僵局或活锁吗?

2 个答案:

答案 0 :(得分:0)

如果您有多个线程,几乎所有函数都可以参与潜在的活锁或死锁(或两者),具体取决于它的使用方式。算法很重要。现在,某些使用sem_trywait的特定模式可能会或可能不会形成实时或死锁,但仅从功能名称来看,很难以任何特异性回答。

答案 1 :(得分:0)

如果两个线程争用由彼此的信号量锁定的相同资源,它应该与E_DEADLK失败。这是正确的行为,但您需要检测它并在发生时重试。换句话说,是的,它可以死锁,但是系统会检测到这个并且失败了,而不是让你停下来。