【发布时间】:2016-12-06 14:56:17
【问题描述】:
如何重构以下代码以使用推荐的 lock_guards?
bool locked = false;
bool sync() {
if (locked) {
mutex.unlock();
} else {
mutex.lock();
}
locked = !locked;
return locked;
}
所需的使用模式:
while (sync()) {
// do safe things
}
基本上,我正在尝试模拟 Python 中的 with 语句。示例:
from multiprocessing import Lock
with Lock():
# do safe things
【问题讨论】:
-
您能否提供一个 Python 示例,其中包含
with和您希望在 C++ 中使用的互斥锁? -
你想
sync()是什么意思?只是切换一个锁? -
糟糕的设计需要糟糕的代码。 根本不需要进行锁定切换。
-
@michalsrb 我添加了一个示例 @RichardHodges 是的,我希望在
while循环的一次迭代中保持锁定,然后释放。 -
@SergeyA 例如,如何同步多个参与者写入文件?