C 如何在向线程发送信号时中断kevent()?
我想用一个信号通知一个工作线程——它应该停止等待事件并检查一些全局条件。我在Linux上使用C 如何在向线程发送信号时中断kevent()?,c,multithreading,macos,kqueue,C,Multithreading,Macos,Kqueue,我想用一个信号通知一个工作线程——它应该停止等待事件并检查一些全局条件。我在Linux上使用epoll_pwait,我想在Mac OS上也这样做 但是kqueue(2)手册上说: EVFILT_信号。。。只有发送到进程而不是特定线程的信号才会触发过滤器 如何克服这一限制?或者,可能还有另一种很好的方法来通知正在等待kevent的唯一线程。任何I/O多路复用API的通用方法是: 使用pipe()函数打开管道 将其读取端添加到kevent/epoll/任何集合 在管道的另一端写一些东西来唤醒事件轮询
epoll_pwait
,我想在Mac OS上也这样做
但是kqueue(2)
手册上说:
EVFILT_信号。。。只有发送到进程而不是特定线程的信号才会触发过滤器
如何克服这一限制?或者,可能还有另一种很好的方法来通知正在等待kevent的唯一线程。任何I/O多路复用API的通用方法是:
任何I/O多路复用API的通用方法为: