実行中のスレッドから別の実行中のスレッドにデータを渡す方法はありますか。スレッドの 1 つにメニューが表示され、ユーザーは cin を使用して 1 つのオプションを選択します。もう一方のスレッドはデータを処理し、「X」期間ごとに結果をサーバーに送信しています。ユーザーがデータを入力するのを待つcin命令でプログラム全体を待つことができるので、プログラムを2つのスレッドに分割しました。メニューのデータ入力は、別のスレッドで使用されます。
ありがとう
私はhttpサーバーで同じ質問に遭遇しました。クライアントソケットを受け入れるスレッドを1つ取得しますが、それらを別のスレッドに配布します。私の提案は、待機スレッドと処理スレッドが同じキューを使用し、キューのポインターを両方のスレッドに渡し、ユーザー入力がある場合に待機スレッドがデータをキューに書き込み、処理スレッドがキューが空でなくなるまでスリープします。例:
ring_queue rq;// rqのアドレスをwaiting_threadとdealing_threadに渡すことを忘れないでください
待ちスレッド
while(true){
res = getInput();//block here
rq->put(res);
}
=======================================
取引スレッド
while(true){
while(rq.isEmpty()){
usleep(100);
}
//not empty
doYourWorks();
}