0

実行中のスレッドから別の実行中のスレッドにデータを渡す方法はありますか。スレッドの 1 つにメニューが表示され、ユーザーは cin を使用して 1 つのオプションを選択します。もう一方のスレッドはデータを処理し、「X」期間ごとに結果をサーバーに送信しています。ユーザーがデータを入力するのを待つcin命令でプログラム全体を待つことができるので、プログラムを2つのスレッドに分割しました。メニューのデータ入力は、別のスレッドで使用されます。

ありがとう

4

2 に答える 2

0

私は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();
}
于 2013-05-07T09:04:36.750 に答える