我正在尝试在C中编写一个简单的win32控制台应用程序来模拟股票价格,我需要指定时间间隔,以便每n毫秒发布一个新价格。
最终目标是将测试数据写入数据库并对应用程序进行压力测试,该应用程序应该对新的滴答作出反应并执行计算。
我的简单价格服务器的结构如下
int main (void)
{
int n = 0;
//set interval to 1 millisecond
while (true) {
printf ("New price...\n");
// Publish price and write to database
SleepExecution (n);
}
return 0;
}
我无法找到一个API调用,它允许我在任意n毫秒内停止执行上述代码。睡眠似乎是解决方案,但我宁愿不使用它。
您是否建议使用图书馆或网上的样本我可以从中获取灵感?
答案 0 :(得分:2)
CreateWaitableTimer
非常适合定期运行代码。结合timeBeginPeriod
来提高系统计时器速率,并提高线程优先级以便按时唤醒,你应该有一个99.99%有效的解决方案。
答案 1 :(得分:1)
暂停执行是特定于操作系统的操作。
对于MS Windows(Win 95及之后),请使用函数Sleep()
,其中参数是最小重新安排时间(以毫秒为单位)。
对于Linux,有几种方法,但 int nanosleep(const struct timespec *req, struct timespec *rem);
允许大多数用途的纳秒级精度。 sleep()
允许一秒精度,因此它可能对您的目的无用。
我看到提到了win32。要使用Sleep()
,程序可能会使用常量值,具体取决于要求,但如果需要高度一致性,则根据需要更新的时间动态计算延迟,直到下次需要更新为止。