在循环中使用lock_guard

时间:2017-03-16 02:54:09

标签: c++ stl mutex

我有一个数组,其中每个条目都是一个链表。为了避免在访问链接列表时出现同步问题,我在每个条目中添加了一个互斥锁。

我的问题是,我可以将循环的每次迭代中的lockunlock的以下调用转换为一个lock_guard,如下所示吗?每次迭代后,每个条目的互斥锁是否会被解锁?感谢。

for(int i = 0; i < TABLE_SIZE; ++i)
{
    table[i].entryMtx.lock ();

    //... access the linked list of the entry...

    table[i].entryMtx.unlock ();
}

// --->

for(int i = 0; i < TABLE_SIZE; ++i)
{
    std::lock_guard < std::mutex > lk (table[i].entryMtx);

    // ... access the linked list of the entry
}

1 个答案:

答案 0 :(得分:3)

是的,这就是在C ++(和其他语言)中使用析构函数的方式。

但是,它不是stdx,而是std。可能是一个错字。