Difference between revisions of "cpp/named req/BasicLockable"
From cppreference.com
(P2160R1/LWG2363) |
(Explicitly specifiy non-shared lock.) |
||
Line 21: | Line 21: | ||
|} | |} | ||
− | === | + | ====Non-shared locks==== |
− | + | A lock on an object is said to be ''non-shared lock'' if it is acquired by a call to {{tt|lock}}, {{tt|try_lock}}, {{tt|try_lock_for}}, or {{tt|try_lock_until}} member function. | |
===See also=== | ===See also=== |
Revision as of 17:41, 18 October 2021
The BasicLockable requirements describe the minimal characteristics of types that provide exclusive blocking semantics for execution agents (i.e. threads).
Requirements
For type L
to be BasicLockable, the following conditions have to be satisfied for an object m
of type L
:
Expression | Preconditions | Effects |
---|---|---|
m.lock() | Blocks until a lock can be obtained for the current execution agent (thread, process, task). If an exception is thrown, no lock is obtained. | |
m.unlock() | The current execution agent holds a non-shared lock on m .
|
Releases the non-shard lock held by the execution agent.
Throws no exceptions. |
A lock on an object is said to be non-shared lock if it is acquired by a call to lock
, try_lock
, try_lock_for
, or try_lock_until
member function.