可以使用条件变量和互斥锁来实现控制循环的暂停和重新启动。

假设有一个线程 A,需要控制另一个线程 B 的 while 循环的暂停和重新启动。

  1. 定义一个条件变量 cv 和一个互斥锁 mutex。

  2. 在线程 B 的 while 循环中,加入以下代码:

unique_lock<mutex> lock(mutex);
while (!should_stop) {
    cv.wait(lock);
    // 循环体
}
  1. 在线程 A 中,定义两个方法 pause 和 resume,分别用于暂停和重新启动线程 B 的 while 循环。
void pause() {
    unique_lock<mutex> lock(mutex);
    should_stop = true;
}

void resume() {
    unique_lock<mutex> lock(mutex);
    should_stop = false;
    cv.notify_one();
}
  1. 在需要暂停线程 B 的时候,调用 pause 方法;在需要重新启动线程 B 的时候,调用 resume 方法。

这样,线程 A 就可以通过条件变量和互斥锁控制线程 B 的 while 循环的暂停和重新启动了。

C++ 线程控制:使用条件变量和互斥锁暂停和重启循环

原文地址: https://www.cveoy.top/t/topic/jnVd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录