定时器和睡眠在窗户上

时间:2013-02-21 20:12:15

标签: c windows bandwidth throttling

我正在尝试将一些使用nanosleep()get_clocktime()的linux代码移植到Windows。据我所知,Windows上没有那么多的性能计时器,除Sleep()之外没有真正的睡眠功能。我在Windows上找到了QueryPerformanceCounterQueryPerformanceFrequency,但我如何使用快速睡眠功能来调整它们。我尝试移植的代码位于此StackOverflow帖子:https://stackoverflow.com/a/13559213/1161270

总的来说,我正在尝试将linux代码移植到使用nanosleep()get_clocktime()struct timespec的窗口,但似乎没有真正的等价物。我也对如何添加油门延迟的其他想法持开放态度。我已经阅读了PdhGetFormattedCounterArray()函数,我有工作代码来监视计算机的输出带宽,以字节为单位,但我不确定如何使用这些数据来创建延迟来限制数据发送到特定的kb / s速度,而且更倾向于使用链接帖子中提供的其他方法。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

请记住,大多数操作系统睡眠类型的ACTUAL精度通常以毫秒为单位(甚至是其中的一些倍数)。很可能看起来你可以睡得更短,但实际上,操作系统实际上并没有使进程进入睡眠状态,或者睡眠时间是“滴答”。这适用于Linux(取决于内核配置)和Windows。

微软在这里解释了超时(睡眠只是暂停,等待什么都没发生): http://msdn.microsoft.com/en-gb/library/windows/desktop/ms687069%28v=vs.85%29.aspx#waitfunctionsandtime-outintervals