データを受け取るときに、より低いレベルのアプリケーションが常にコールバックRecData(char * buf)を呼び出すアプリケーションを使用しています。2つのスレッド、つまり消費者用とプロデューサ用のキューを使用する方法
コールバックで私は2つのスレッドを作成し、これらの作成されたスレッドにコンシューマとプロデューサ関数を渡しています。
マイコード:
空隙RecData(チャー*のBUF) {
CreateThread(NULL,0,producer_queue,(void *)buf,0,NULL);
CreateThread(NULL,0,consumer_queue,NULL,0,NULL);
}
上記作品Iは、一度に1つのデータを受信します。私が5つのデータをほぼ同時に受け取った場合、producer_queueは最初にすべてのデータをキューに入れ、次にconsumer_queueがデータの取得を開始するはずですが、ここでproducer_queueが最初のデータをキューに入れるとすぐにconsumer_queueが取得します。
データを受信するたびに2つのスレッドをスポーンする理由はありますか? – Alan
私の唯一の動機は、キュー内のデータをエンキューしてからキューからデータを読み込むことですが、RecData(char * buf)関数にプロデューサ用のスレッドを1つだけ入れると、キューからデータを読み込む方法とタイミングが変わります。 助けてください –
もう1つの方法は、1つのリーダースレッドを生成することです。 RecCallバックでは、キューをロックしてデータをエンキューします。あなたのリーダースレッドは、キューからデータをループするでしょう。ちょっとした考え。 – Alan