Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
使用sem_trywait()会让你陷入死锁或活锁吗?
sem_trywait()
如果您有多个线程,则几乎任何函数都可能参与潜在的活锁或死锁(或两者),具体取决于它的使用方式。算法很重要。现在,有某些特定的使用模式sem_trywait可能会或可能不会形成活锁或死锁,但仅从函数名称来看,很难给出任何具体的答案。
sem_trywait
如果两个线程争用被对方信号量锁定的相同资源,它应该会失败并显示 E_DEADLK。这是正确的行为,但您需要检测它并在它发生时重试。换句话说,是的,它可能会死锁,但系统会检测到这一点并导致功能失效,而不是让你挂起。