0

使用sem_trywait()会让你陷入死锁或活锁吗?

4

2 回答 2

0

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

于 2012-07-12T03:09:14.070 回答
0

如果两个线程争用被对方信号量锁定的相同资源,它应该会失败并显示 E_DEADLK。这是正确的行为,但您需要检测它并在它发生时重试。换句话说,是的,它可能会死锁,但系统会检测到这一点并导致功能失效,而不是让你挂起。

于 2012-07-12T03:12:28.627 回答