在窗口平台下,在c ++中睡眠线程为100.8564毫秒

Sid*_*qui 1 c c++ windows

我有任何方法在窗口OS下睡眠线程达到100.8564毫秒.我正在使用多媒体计时器,但其分辨率至少为1秒.请指导我,以便我可以处理毫秒的小数部分.

Pav*_*sky 5

是的,你可以做到.请参阅QueryPerformanceCounter()以读取准确时间,并进行忙循环.

这将使您能够以高达10纳秒的分辨率进行等待,但是,如果线程调度程序决定在循环结束时从您那里窃取控制权,它将会,并且除了分配您的进程实时优先级之外,您无法做任何事情.

你可能也看看这个:http://msdn.microsoft.com/en-us/library/ms838340(WinEmbedded.5).aspx

开发了几个框架来在Windows上进行硬实时.

否则,你的问题可能暗示你可能做错了什么.有许多机制可以解决需要精确延迟的问题,例如使用适当的总线驱动程序(如果是硬件/ IO,或者如果您正在设计驱动程序则使用相应的DMA),等等.

请告诉我们你究竟在建造什么.

  • @Arman这个我已经猜到了:)有什么应用?应该是什么?为什么输出时序如此重要?每次都重要,或者在一定时间内出现错误是好的吗?因为如果没有,我写的内容可能取决于系统中的其他内容,包括UI,一些UI进程(如taskman)可以有RP,内核模式代码可以干扰等等.你的任务究竟是什么? (2认同)