Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4008349
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类:

2007-10-26 14:30:39

前段时间用到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 Function
Suspends 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) |
给主人留下些什么吧!~~