我需要使用 for 循环中使用的 std::mutex 来保护数据容器,如下所示:
for (auto it = data.begin(); it != data.end(); ++it)
{
std::cout << it->param;
...
}
我可以想到几个选项,但它们像这样丑陋:
{ // artificial scope
std::scoped_lock lock(myMutex)
for (auto it = data.begin(); it != data.end(); ++it)
{
std::cout << it->param;
...
}
}
有没有一种好看的方法来实现这一点?我正在考虑类似以下(C++ 17)的内容,但这无法编译。:(
for (std::scoped_lock lock(myMutex), auto it = data.begin(); it != data.end(); ++it)
或者,
for (auto [lock, it] = std::pair(std::scoped_lock lock(myMutex), data.begin()); it != data.end(); ++it)