リモート マシン上の Python クライアントからのデータをリッスンする Labwindows サーバーがあります。Labwindows サーバーでは、TCP_DATAREADY イベントが発生するたびに、バッファーを読み取ってクライアントからデータを取得します。この時点で、データを解析して UI コントロールを更新する必要があります。ただし、データは頻繁に到着するため、データの解析と UI コントロールの更新のタスクを別のスレッドに割り当てて、サーバーがクライアントからのデータを失わないようにすることが最善です。
Labwindows でスレッド セーフ キューを使用することを考えました。ただし、クライアントから取得するデータは文字列です。文字列要素を持つキューを作成するにはどうすればよいですか? クライアントから受信したデータは、データが到着するたびに更新されるため、ポインターを使用できません。
ソケットからデータを読み取るコードは次のとおりです。
case TCP_DATAREADY:
if ((dataSize = ServerTCPRead (g_hconversation, receiveBuf,
dataSize, 1000))
< 0)
{
SetCtrlVal(g_hconversation, MAINPNL_TEXTBOX,"Receive Error");
}
else
{
//receiveBuff should be passed to function that decides where to display it
display_value_from_client(receiveBuf);
}
そのため、 receiveBuf は常に変化しており、それへのポインタをキューに保存しても役に立ちません。ここでスレッドを実装して、スレッドが解析機能を処理し、メイン スレッドのソケットからデータを読み取ることだけを気にする必要があるようにするにはどうすればよいでしょうか?