【发布时间】:2013-03-13 10:31:19
【问题描述】:
程序如何尝试同时锁定多个互斥锁,并知道它最终解锁了哪个互斥锁。本质上,我正在寻找的是 select() 的等价物,但对于互斥体。这样的事情存在吗?如果没有,有没有实现它的库?
【问题讨论】:
-
您可以在每个互斥锁中依次调用
pthread_mutex_trylock()吗?还是您希望它在互斥锁可用之前阻止该问题? -
这是一个繁忙的循环。如果没有
sleep()调用,线程将使用 100% 的 CPU。此外,简单地阻塞quasy_select()的调用者,然后在解锁一个锁时解除阻塞会更有效。 -
明白。出于兴趣,用例是什么?
-
具有多个发布者和一个订阅者的 Pub/Sub。我希望订阅者在没有数据时阻止。发布者可能同时发布。
-
@Maz,这通常是条件变量甚至信号量,互斥锁不是正确的工具。
标签: c multithreading pthreads mutex