Files
2025-10-25 03:02:53 +03:00

59 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[thread.sharedmutex.class]
# 32 Concurrency support library [[thread]](./#thread)
## 32.6 Mutual exclusion [[thread.mutex]](thread.mutex#thread.sharedmutex.class)
### 32.6.4 Mutex requirements [[thread.mutex.requirements]](thread.mutex.requirements#thread.sharedmutex.class)
#### 32.6.4.4 Shared mutex types [[thread.sharedmutex.requirements]](thread.sharedmutex.requirements#thread.sharedmutex.class)
#### 32.6.4.4.2 Class shared_mutex [thread.sharedmutex.class]
[🔗](#lib:shared_mutex)
namespace std {class shared_mutex {public: shared_mutex(); ~shared_mutex();
shared_mutex(const shared_mutex&) = delete;
shared_mutex& operator=(const shared_mutex&) = delete; // exclusive ownershipvoid lock(); // blockingbool try_lock(); void unlock(); // shared ownershipvoid lock_shared(); // blockingbool try_lock_shared(); void unlock_shared(); using native_handle_type = *implementation-defined*; // see [[thread.req.native]](thread.req.native "32.2.3Native handles") native_handle_type native_handle(); // see [[thread.req.native]](thread.req.native "32.2.3Native handles")};}
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L7963)
The class shared_mutex provides a non-recursive mutex
with shared ownership semantics[.](#1.sentence-1)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L7967)
The class shared_mutex meets
all of the shared mutex requirements ([[thread.sharedmutex.requirements]](thread.sharedmutex.requirements "32.6.4.4Shared mutex types"))[.](#2.sentence-1)
It is a standard-layout class ([[class.prop]](class.prop "11.2Properties of classes"))[.](#2.sentence-2)
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L7972)
The behavior of a program is undefined if
- [(3.1)](#3.1)
it destroys a shared_mutex object owned by any thread,
- [(3.2)](#3.2)
a thread attempts to recursively gain any ownership of a shared_mutex, or
- [(3.3)](#3.3)
a thread terminates while possessing any ownership of a shared_mutex[.](#3.sentence-1)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/threads.tex#L7980)
shared_mutex may be a synonym for shared_timed_mutex[.](#4.sentence-1)