我有一个特定的问题,我想要一个单独的工作线程,如果缓冲区不为空,它在某些时期控制。如果不是,线程从缓冲区(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; });
}
}
}
}*/