我通过sys/time.h中的setitimer函数在我的C++代码中使用了一个计时器。这会将SIGALRM信号映射到我的计时器处理程序方法。在这之后我就不能使用睡眠功能了。我猜这是因为睡眠也使用了SIGALRM信号。对于这个问题,你能建议一些解决方法吗?
感谢您的回复。
发布于 2010-09-05 12:48:21
您可以尝试将select()用作计时器。我不知道它是否使用了SIGALRM,但它应该很容易测试。类似于:
timeval t = {1, 0};
select(0, NULL, NULL, NULL, &t);发布于 2010-09-05 12:39:44
发布于 2010-09-05 12:43:35
我会使用一个为这些操作系统服务提供抽象的库。我使用ACE库来实现定时器和休眠(ACE_OS::sleep,ACE_Reactor::schedule_timeout),它们在一起工作没有任何问题。据我所知,ACE使用select作为计时器。我猜boost::thread::sleep和boost::asio::deadline_timer也会成功完成这项任务。
https://stackoverflow.com/questions/3645026
复制相似问题