C# 死循环等待方式

C# 死循环等待方式

在工业软件、上位机等需要对硬件设备进行实时通信的开发过程中,我们经常会使用死循环来循环读取缓冲区的数据。如下所示

当设备中无数据,我们却继续取读取串口数据时,这样会让线程不间隙的做无用功(此时CPU一般很高)。为了防止这个现象,我们一般会在程序中加一个等待,如下。

Thread.Sleep()

除了这种方式,还有其他的线程等待方式。比如自旋(SpinWait.SpinUntil(() => false, 1);)同步信 (ManualResetEvent)

SpinWait.SpinUntil

自旋

ManualResetEvent.WaitOne()

同步信 等待

有时我们也可以让线程等待一个同步信 ,如下所示

这样的话,还可以同步监听系统是否退出。同步准确关闭线程。


积跬步以至千里:) (:一阵没来由的风

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月14日
下一篇 2020年7月14日

相关推荐