12.4. ウェイクプリミティブ

connection::wake() メソッドにより、スレッドは on_connection_wake() コールバックをトリガーして、接続でアクティビティーを求めます。これは、connection にあるスレッドセーフメソッドのみです。

wake() スレッド間をシグナル化するための軽量の低レベルプリミティブです。

  • work_queue とは異なり、コードやデータは含まれません。
  • wake() への複数の呼び出しは、単一の on_connection_wake() に結合される可能性があります。
  • on_connection_wake() の呼び出しは、ライブラリーが内部的に wake() を使用するため、wake() へのアプリケーション呼び出しなしで発生する可能性があります。

wake() のセマンティクスは、std::condition_variable::notify_one() に似ています。ウェイクアップが発生しますが、ウェイクアップが発生した理由と、それについての情報が何であるかを決定するために、共有アプリケーションの状態が必要です。

ワークキューは多くのインスタンスで使いやすくなりますが、独自の外部スレッドセーフキューがあり、データをチェックするために接続をウェイクする効率的な方法が必要な場合は、wake() が役に立つことがあります。