在线文档教程
C++
线程支持 | Thread support

std::shared_timed_mutex

STD::共享[医]定时[医]互斥

Defined in header
class shared_timed_mutex;(since C++14)

shared_timed_mutex类是一个同步原语,可用于保护共享数据不被多个线程同时访问。与其他便于独占访问的互斥类型不同,共享[医]定时[医]互斥锁有两个级别的访问:

  • 共享-多个线程可以共享同一个互斥体的所有权。

  • 排他性-只有一个线程可以拥有互斥体。

共享互斥通常用于多个读取器可以同时访问同一资源而不引起数据竞争的情况,但只有一个写入器可以这样做。

以类似于timed_mutex,,,shared_timed_mutex提供尝试声明对shared_timed_mutex通过try_lock_for(),,,try_lock_until(),,,try_lock_shared_for(),,,try_lock_shared_until()方法。

shared_timed_mutex类满足SharedTimedMutexStandardLayoutType...

成员函数

(constructor)constructs the mutex (public member function)
(destructor)destroys the mutex (public member function)
operator= deletednot copy-assignable (public member function)

排他性锁定

锁锁互斥锁,如果互斥锁不可用,则阻塞%28公共成员函数%29。

试一试[医]锁试图锁定互斥锁,如果互斥锁不可用,则返回%28公共成员函数%29。

试一试[医]锁[医]对于试图锁定互斥对象,如果在指定的超时持续时间%28公共成员函数%29中互斥不可用,则返回。

试一试[医]锁[医]在尝试锁定互斥之前,如果互斥对象在指定的时间点达到%28公共成员函数%29之前不可用,则返回

解锁解锁互斥锁%28公共成员函数%29

共享锁定

锁[医]共享锁定互斥锁以实现共享所有权,如果互斥锁不可用,则阻塞%28公共成员函数%29。

试一试[医]锁[医]Shared试图锁定互斥锁以实现共享所有权,如果互斥锁不可用,则返回%28公共成员函数%29。

试一试[医]锁[医]共享[医]对于试图锁定共享所有权的互斥对象,如果在指定的超时持续时间%28公共成员函数%29中互斥不可用,则返回

试一试[医]锁[医]共享[医]在尝试锁定互斥锁以实现共享所有权之前,如果互斥对象在达到指定时间点之前不可用,则返回指定的公共成员函数%29。

解锁[医]共享解锁互斥锁%28共享所有权%29%28公共成员函数%29

一个复制赋值操作符,用于一个类,它包含可以处理多个读取器的资源,但只能处理一个编写器。

二次

#include <mutex> #include <shared_mutex> class R { mutable std::shared_timed_mutex mut; /* data */ public: R& operator=(const R& other) { // requires exclusive ownership to write to *this std::unique_lock<std::shared_timed_mutex> lhs(mut, std::defer_lock // requires shared ownership to read from other std::shared_lock<std::shared_timed_mutex> rhs(other.mut, std::defer_lock std::lock(lhs, rhs /* assign data */ return *this; } }; int main() { R r; }

二次

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/线程/Shared[医]定时[医]互斥