我有一个由几个“块”组成的数据结构。对于每个块,我都有互斥锁。我想实现一个锁定整个数据结构并将这个锁移动到调用函数的方法。这是我的代码:
std::vector<std::unique_lock<boost::shared_mutex>> lock_array()
{
std::vector<std::unique_lock<boost::shared_mutex>> locks;
for(size_t block = 0; block < BLOCK_COUNT; ++block)
{
locks.push_back(std::unique_lock<boost::shared_mutex>(mutexes[block]));
}
return std::move(locks);
}
如果我以这种方式调用它,我的数组还会被锁定吗?
void some_method()
{
auto locks = lock_array();
...
}