我有一个数组,其中每个条目都是一个链表。为了避免在访问链接列表时出现同步问题,我在每个条目中添加了一个互斥锁。
我的问题是,我可以将循环的每次迭代中的lock
和unlock
的以下调用转换为一个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
}
答案 0 :(得分:3)
是的,这就是在C ++(和其他语言)中使用析构函数的方式。
但是,它不是stdx
,而是std
。可能是一个错字。