前段时间用到Linux下的线程等待, 当时找了很长时间, 具体的请查看:
http://blog.chinaunix.net/u/19782/showart_359922.html现在要把写的东西移植到Windows下, 今天运行我那写的东西, 编译没任何问题, 运行起来CPU使用100%, 应该是什么进入死循环了,
查了一下, 原来是在Linux下写的线程等待在Windows下没用了, 不等了。
下面是我写的Linux下的线程等待代码, 结果在Windows下根本就不等。
static void pthr_sleep(int sec){ struct timeval t_val; t_val.tv_sec = sec; t_val.tv_usec = 0; select(0, NULL, NULL, NULL, &t_val);}自己以为这东西是万能的, 没想到又出问题了, 看来只有测试过的才可以说Yes了。
想的再好还只是想的啊。
重新写了一下, Windows下的线程等待就一个Sleep就可以的
MSDN的说法:
Sleep FunctionSuspends the execution of the current thread for at least the specified interval.VOID WINAPI Sleep( __in DWORD dwMilliseconds);
/**
*
* Thread sleep
*
* 通过了Windows和rh9的测试
*/
void thr_sleep(uint32_t sec)
{
#ifdef _WIN32
Sleep(sec*1000);
#else
struct timeval t_val;
t_val.tv_sec = sec;
t_val.tv_usec = 0;
select(0, NULL, NULL, NULL, &t_val);
#endif
}
|
阅读(1490) | 评论(0) | 转发(0) |