2011-09-06 80 views
2

我想在C中编写一个简单的win32控制台应用程序来模拟股票价格蜱,我需要指定时间间隔以便每发布一个新毫秒n毫秒。每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毫秒

我简单的价格服务器的结构。睡眠看起来是解决方案,但我宁愿不使用它。

是否有任何图书馆会推荐使用或在网上抽样我可以从中吸取灵感?

+14

你为什么不想睡觉?如果你解释这一点,人们更可能推荐合适的替代品。 – richardolsson

+6

我想你有四个选择:1)使用睡眠,2)使用使用睡眠的库,3)实现自己的睡眠(需要系统级别的详细废话,不推荐)或4)使用自己实现的库睡觉。 1)通过FAR是最简单的。 – corsiKa

+0

@glowcoder:我认为你的评论应该是一个答案。 –

回答

1

挂起执行是特定于操作系统的操作。

对于MS Windows(Win 95以及之后),使用函数Sleep()其中参数是以毫秒为单位的最小重新计划时间。

对于Linux,有几种方法,但int nanosleep(const struct timespec *req, struct timespec *rem);允许大多数用途的纳秒精度。 sleep()允许一秒的精确度,所以它可能对您的目的没有用处。


我看到win32被提及。要使用Sleep(),程序可能会根据要求使用一个常量值,但是如果需要高一致性,那么将根据其延迟多长时间来动态计算延迟,直到下次需要更新为止。

2

CreateWaitableTimer非常适合定期运行代码。结合timeBeginPeriod来提高系统定时器的速率,并启动线程优先级,以便按时唤醒,您应该有一个99.99%的有效解决方案。