Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::shared_timed_mutex

      From cppreference.com
      <cpp‎ |thread
       
       
      Concurrency support library
      Threads
      (C++11)
      (C++20)
      this_thread namespace
      (C++11)
      (C++11)
      (C++11)
      Cooperative cancellation
      Mutual exclusion
      shared_timed_mutex
      (C++14)
      Generic lock management
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Condition variables
      (C++11)
      Semaphores
      Latches and Barriers
      (C++20)
      (C++20)
      Futures
      (C++11)
      (C++11)
      (C++11)
      Safe reclamation
      Hazard pointers
      Atomic types
      (C++11)
      (C++20)
      Initialization of atomic types
      (C++11)(deprecated in C++20)
      (C++11)(deprecated in C++20)
      Memory ordering
      (C++11)(deprecated in C++26)
      Free functions for atomic operations
      Free functions for atomic flags
       
       
      Defined in header<shared_mutex>
      class shared_timed_mutex;
      (since C++14)

      Theshared_timed_mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads. In contrast to other mutex types which facilitate exclusive access, ashared_timed_mutex has two levels of access:

      • exclusive - only one thread can own the mutex.
      • shared - several threads can share ownership of the same mutex.

      Shared mutexes are usually used in situations when multiple readers can access the same resource at the same time without causing data races, but only one writer can do so.

      In a manner similar totimed_mutex,shared_timed_mutex provides the ability to attempt to claim ownership of ashared_timed_mutex with a timeout via thetry_lock_for(),try_lock_until(),try_lock_shared_for(),try_lock_shared_until() member functions.

      Theshared_timed_mutex class satisfies all requirements ofSharedTimedMutex andStandardLayoutType.

      Contents

      [edit]Member functions

      constructs the mutex
      (public member function)[edit]
      destroys the mutex
      (public member function)[edit]
      operator=
      [deleted]
      not copy-assignable
      (public member function)[edit]
      Exclusive locking
      locks the mutex, blocks if the mutex is not available
      (public member function)[edit]
      tries to lock the mutex, returns if the mutex is not available
      (public member function)[edit]
      tries to lock the mutex, returns if the mutex has been
      unavailable for the specified timeout duration
      (public member function)[edit]
      tries to lock the mutex, returns if the mutex has been
      unavailable until specified time point has been reached
      (public member function)[edit]
      unlocks the mutex
      (public member function)[edit]
      Shared locking
      locks the mutex for shared ownership, blocks if the mutex is not available
      (public member function)[edit]
      tries to lock the mutex for shared ownership, returns if the mutex is not available
      (public member function)[edit]
      tries to lock the mutex for shared ownership, returns if the mutex has been
      unavailable for the specified timeout duration
      (public member function)[edit]
      tries to lock the mutex for shared ownership, returns if the mutex has been
      unavailable until specified time point has been reached
      (public member function)[edit]
      unlocks the mutex (shared ownership)
      (public member function)[edit]

      [edit]Notes

      Feature-test macroValueStdFeature
      __cpp_lib_shared_timed_mutex201402L(C++14)std::shared_timed_mutex

      [edit]Example

      This section is incomplete
      Reason: build a motivating example

      A copy assignment operator for a class that holds resources that can handle multiple readers, but only one writer.

      Run this code
      #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 *thisstd::unique_lock<std::shared_timed_mutex> lhs(mut,std::defer_lock);// requires shared ownership to read from otherstd::shared_lock<std::shared_timed_mutex> rhs(other.mut,std::defer_lock);std::lock(lhs, rhs);/* assign data */return*this;}}; int main(){    R r;}
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/shared_timed_mutex&oldid=158823"

      [8]ページ先頭

      ©2009-2025 Movatter.jp