本文整理汇总了C++中boost::unique_lock::release方法的典型用法代码示例。如果您正苦于以下问题:C++ unique_lock::release方法的具体用法?C++ unique_lock::release怎么用?C++ unique_lock::release使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boost::unique_lock
的用法示例。
在下文中一共展示了unique_lock::release方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lock_std
void
condition_variable::wait( boost::unique_lock< mutex >& lock )
{
assert( lock.owns_lock( ) );
boost::unique_lock< mutex > local_lock( *lock.release( ), boost::adopt_lock );
better_lock lock_std( mt );
global_thr_pool.yield( [&]( coroutine running ) {
lock_unlocker< better_lock > l_unlock_std_mt( lock_std );
lock_unlocker< boost::unique_lock< mutex > > l_unlock_co_mt( local_lock );
waiting_cors.emplace_back( std::move( running ) );
} );
// If this coroutine is resumed by a thread different from the one that
// yielded,
// then it is possible that the changes to internal state of the 'lock'
// variable will
// not have been yet acknowledged by the resuming thread.
// This special case will lead to a difficult to debug race condition
// involving
// the owns_lock member variable.
// This is why we use local_lock.
assert( !local_lock.owns_lock( ) );
lock = boost::unique_lock< mutex >( *local_lock.release( ) );
}