C#UDP侦听器线程 - 不要使用while(true)来刻录CPU?
问题描述:
使用下面的代码,有没有更好的方法来建立一个UDP监听比while(true)
与Thread.Sleep(10)
?C#UDP侦听器线程 - 不要使用while(true)来刻录CPU?
public void Start()
{
socket.Bind(ip);
while (true)
{
data = new byte[1024];
receivedDataLength = socket.ReceiveFrom(data, ref Remote);
raw = Encoding.ASCII.GetString(data, 0, receivedDataLength);
row = new LogRow(raw);
//Console.WriteLine(row.ClientIp);
row_queue.Enqueue(row);
Thread.Sleep(10);
}
}
答
ReceiveFrom
正在阻塞。线程将被暂停,直到数据到达。除非Socket
处于非阻塞模式。
你应该补充一点,因为'ReceiveFrom'被阻塞,所以不需要'Sleep'。 – 2011-04-06 15:08:51
啊好吧,它必须是我的插入线程正在燃烧CPU。谢谢,我将放弃'睡眠'。 – 2011-04-06 15:12:49
@凯尔布兰特♦是的,'Spleep'太过分了。在调试中运行应用程序,并在开始刻录时暂停调试并检查每个非滑动线程。 – Andrey 2011-04-06 15:34:19