1

作業中のスレッドにシグナルで通知したい - イベントの待機を停止し、いくつかのグローバル条件をチェックする必要があります。Linuxで使用epoll_pwaitしていますが、Mac OSでも同じことをしたいと考えています。

しかし、kqueue(2)マニュアルには次のように書かれています。

EVFILT_SIGNAL ... 特定のスレッドではなく、プロセスに送信されたシグナルのみがフィルターをトリガーします。

この制限を克服するにはどうすればよいですか? または、唯一のスレッドが待機していることを通知する別の良い方法があるのkeventでしょうか?

4

1 に答える 1

1

I/O 多重化 API の一般的な方法は次のとおりです。

  1. pipe() 関数を使用してパイプを開き、
  2. その読み取り終了を kevent/epoll/whatever セットに追加します。
  3. パイプのもう一方の端に何かを書き込んで、イベント ポーラーをウェイクアップします。
于 2013-10-18T19:33:13.837 に答える