ʞᴉɯ*_*ʞᴉɯ 8 c# sockets nonblocking while-loop
我只是想在c#中使用非阻塞套接字进行一些套接字编程.我发现的各种样本,比如这样,似乎使用了一个while(true)循环,但是这种方法会导致cpu以100%的速度突发.有没有办法使用事件编程风格的非阻塞套接字?谢谢
Mat*_*vis 8
请参阅此处的MSDN示例.该示例显示了如何异步接收数据.您还可以使用Socket BeginSend/EndSend方法异步发送数据.
您应该注意,回调委托在ThreadPool线程的上下文中执行.如果回调内部接收的数据需要与另一个线程共享,这很重要,例如,以Windows窗体显示数据的主UI线程.如果是这样,您将需要使用lock关键字同步访问数据,例如.
lock
正如您所注意到的那样,使用非阻塞套接字和while循环,处理器固定为100%.异步模型仅在有数据要发送或接收时才调用回调委托.
小智 5
避免在没有数据接收thread.sleep(100)或更少的数据时,在沉重的 while 循环中出现 CPU 问题。这将使其他进程改变来完成他们的任务
thread.sleep(100)
归档时间:
16 年 前
查看次数:
18497 次
最近记录:
13 年,1 月 前