C# 死循环等待方式
在工业软件、上位机等需要对硬件设备进行实时通信的开发过程中,我们经常会使用死循环来循环读取缓冲区的数据。如下所示
当设备中无数据,我们却继续取读取串口数据时,这样会让线程不间隙的做无用功(此时CPU一般很高)。为了防止这个现象,我们一般会在程序中加一个等待,如下。
Thread.Sleep()
除了这种方式,还有其他的线程等待方式。比如自旋(SpinWait.SpinUntil(() => false, 1);)同步信 (ManualResetEvent)
SpinWait.SpinUntil
自旋
ManualResetEvent.WaitOne()
同步信 等待
有时我们也可以让线程等待一个同步信 ,如下所示
这样的话,还可以同步监听系统是否退出。同步准确关闭线程。
积跬步以至千里:) (:一阵没来由的风
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!