首页 > 解决方案 > 在另一个线程中解锁共享互斥锁

问题描述

我正在尝试将 shared_mutex 的 unique_lock 移动到另一个线程以实现我的设计目标。

请参阅下面的示例代码。如果我用 std::mutex 替换 std::shared_mutex 代码有效

using namespace std;

shared_mutex shared_mutex_;
{
  unique_lock<shared_mutex> lock_{shared_mutex_};

  thread t{[](unique_lock<shared_mutex> &&lock) { lock.unlock(); },
           move(lock_)};

  t.join();
}

if (shared_mutex_.try_lock()) { // False
  cout << "Lock shared_mutex_ successful\n";
  shared_mutex_.unlock();
}

我的设计目标是:

我正在尝试使用 std::shared_mutex 或 std::shared_timed_mutex 来实现我的设计目标。但这似乎不起作用。如果您有其他想法,请告诉我。谢谢。

标签: c++

解决方案


推荐阅读