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 () が役に立つことがあります。