うわー、私のC++ヒーローによって書かれたこのページhttps://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cppについて知っていたらよかったのに/zaphoydは、C++ Websocket の冒険を始める前に作成されました。そこにはたくさんのレッスンがあります。
私がそれを正しく読んでいれば(それはストレッチです笑)、接続とメッセージの送信と受信はすべて単一のスレッドで処理されるように見えます(彼が「マルチスレッド」またはそれが呼ばれるまで待ちきれませんこの基本的な例ではhttp://www.zaphoyd.com/websocketpp/manual/common-patterns/server-initiated-messages )WebSocket++ handlers block core networking functions. While this program is running its send loop in on_message, no new connections are being processed and no new messages are being received.
、別のスレッドboost::thread(bind(&broadcast_server::process_messages,&server));
が実際にメッセージを処理するように設定され、プライマリ websocket++ スレッドは単純に必要な情報をキューに入れます。
私の知識不足を解消してください:.push()
リンクのコードのこのセクションと同時に発生した場合、失敗しますか
while(m_actions.empty()) {
m_action_cond.wait(lock);
}
action a = m_actions.front();
m_actions.pop();
lock.unlock();
それとも.push()
、ロックが解除されるのを待つだけですか?