使用select实现sleep,是否适合用于多个线程同时调用

夏灯 2018-04-02 10:02:47
void timer_sleep(unsigned long seconds)
{
struct timeval tv;
tv.tv_sec=seconds;
tv.tv_usec=0;
int err;
do{
err=select(0,NULL,NULL,NULL,&tv);
}while(err<0 && errno==EINTR);
}


func1()
{
while (1) {
timer_sleep(1);
std::cout << "func1.."<<std::endl;
}
}

func2()
{
while (1) {
timer_sleep(1);
std::cout << "func2.."<<std::endl;
}
}

new std::thread(func1)
new std::thread(func2)
...全文
677 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyefangzhou24 2018-04-11
  • 打赏
  • 举报
回复
如果有共享变量就应该加锁
  • 打赏
  • 举报
回复
可以考虑使用std::condition_variable::wait_until

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧