【发布时间】:2017-10-16 03:31:43
【问题描述】:
我目前正在开展一个使用 OOP 设计机场的项目。我正在使用 C++。我的程序中有一个主要的 Airport 对象,它具有 RequestLanding() 函数,该函数分配飞机可以降落的跑道号。此函数返回两个枚举之一 - Hold 或 Proceed 以指示飞机是否应该着陆。
从外面有许多飞机物体发出着陆请求。我正在使用 for 循环来计算飞机对象的总数。我正在使用 OpenMp 进行并行循环。我想在 RequestLanding() 函数返回状态 Hold 时让 openmp 线程休眠 3 秒,然后重试。
有没有办法做到这一点?有人可以提供一个简单的例子。提前致谢。
【问题讨论】:
-
为什么不使用
yield而不是睡觉? -
@user0042 假设您的意思是
std::this_thread::yield- 我强烈建议不要这样做。在 Linux 上,它映射到sched_yield,而sched_yield的实现方式绝对不适合在紧密循环中调用。另见stackoverflow.com/q/6807929/620382