如何使线程睡眠/阻止纳秒

use*_*326 0 delphi delphi-xe5

如何阻止线程纳秒或微秒?该Sleep()功能是不可能的,因为它接受毫秒,这显然不是我需要的.

Rob*_*vey 5

使用TStopWatch类,并编写一个while循环,循环直到所需的滴答数(100纳秒间隔)已经过去.

 property ElapsedTicks : Int64 read GetElapsedTicks;
Run Code Online (Sandbox Code Playgroud)

这不会放弃对其他线程的控制; 它只会在当前线程中等待所需的时间段.会有一定程度的错误; 错误的数量取决于Delphi执行每个循环所需的时间.

进一步阅读
如何使用高分辨率性能计数器准确测量经过时间


Dav*_*nan 5

Windows不支持nano睡眠.Windows使用的线程调度比这更粗糙.Windows线程量程的数量级大于纳秒级.