我正在尝试将一些使用nanosleep()
和get_clocktime()
的linux代码移植到Windows。据我所知,Windows上没有那么多的性能计时器,除Sleep()
之外没有真正的睡眠功能。我在Windows上找到了QueryPerformanceCounter
和QueryPerformanceFrequency
,但我如何使用快速睡眠功能来调整它们。我尝试移植的代码位于此StackOverflow帖子:https://stackoverflow.com/a/13559213/1161270
总的来说,我正在尝试将linux代码移植到使用nanosleep()
,get_clocktime()
和struct timespec
的窗口,但似乎没有真正的等价物。我也对如何添加油门延迟的其他想法持开放态度。我已经阅读了PdhGetFormattedCounterArray()
函数,我有工作代码来监视计算机的输出带宽,以字节为单位,但我不确定如何使用这些数据来创建延迟来限制数据发送到特定的kb / s速度,而且更倾向于使用链接帖子中提供的其他方法。
感谢您的时间。
答案 0 :(得分:0)
请记住,大多数操作系统睡眠类型的ACTUAL精度通常以毫秒为单位(甚至是其中的一些倍数)。很可能看起来你可以睡得更短,但实际上,操作系统实际上并没有使进程进入睡眠状态,或者睡眠时间是“滴答”。这适用于Linux(取决于内核配置)和Windows。
微软在这里解释了超时(睡眠只是暂停,等待什么都没发生): http://msdn.microsoft.com/en-gb/library/windows/desktop/ms687069%28v=vs.85%29.aspx#waitfunctionsandtime-outintervals