C++ 线程控制:使用条件变量和互斥锁暂停和重启循环
可以使用条件变量和互斥锁来实现控制循环的暂停和重新启动。
假设有一个线程 A,需要控制另一个线程 B 的 while 循环的暂停和重新启动。
-
定义一个条件变量 cv 和一个互斥锁 mutex。
-
在线程 B 的 while 循环中,加入以下代码:
unique_lock<mutex> lock(mutex);
while (!should_stop) {
cv.wait(lock);
// 循环体
}
- 在线程 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();
}
- 在需要暂停线程 B 的时候,调用 pause 方法;在需要重新启动线程 B 的时候,调用 resume 方法。
这样,线程 A 就可以通过条件变量和互斥锁控制线程 B 的 while 循环的暂停和重新启动了。
原文地址: https://www.cveoy.top/t/topic/jnVd 著作权归作者所有。请勿转载和采集!