私は特定の問題を抱えています。バッファが空でない場合、いくつかの期間で制御する1つの別個の作業スレッドが必要です。そうでない場合、スレッドはバッファ(ConcurrentQueue)からデータを送信します... CPUにとってそれほど高価ではない良い解決策はありますか?
これが私の方法です。うまくいきますが、あまりうまくいかないかもしれません(実際、スレッドの同期をあまり理解していません)。
public void start(object timeout){
//Message - my own objective implementation of some tcp message
Message m;
while (true) {
if (msgBuffer.Count != 0) {
if (msgBuffer.TryDequeue(out m)) {
client.SendData(MediatorPacket.GetPacketBytes(m));
SpinWait.SpinUntil(() => { if (msgBuffer.Count != 0) return true; else return false; });
}
}
}
}*/