我最近看到了 EventWaitHandle 在 C# 中的强大行为,并决定在姊妹应用程序中移动一些功能来做同样的事情。唯一的问题是姊妹应用程序是用 C 编写的。
没什么大不了的,我正在使用 pthreads,它有一个 pthread_cond_t 数据类型,允许发送信号。我唯一的问题是,是否有可能在等待它之前“发出信号”?
现在我的测试说不。也就是说,如果 ThreadA 在 ThreadB 等待之前触发了一个信号,那么 ThreadB 将无限期地等待。是否有另一种我可以使用的 pthread 类型更接近 C# 中 EventWaitHandle 的功能?一个对象是有信号的,这意味着第一个等待它的线程将立即通过,并将其设置为无信号。
将 pthread_cond 包装到另一个数据结构中并不难实现这一点。但同样,这个功能是否已经在 pthread 库中可用?