每n毫秒写一个字符串

时间:2011-09-06 22:45:29

标签: c winapi

我正在尝试在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毫秒内停止执行上述代码。睡眠似乎是解决方案,但我宁愿不使用它。

您是否建议使用图书馆或网上的样本我可以从中获取灵感?

2 个答案:

答案 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(),程序可能会使用常量值,具体取决于要求,但如果需要高度一致性,则根据需要更新的时间动态计算延迟,直到下次需要更新为止。