From Jason Turner

[thread.req.lockable.general]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmplu2267mk/{from.md → to.md} +13 -13
tmp/tmplu2267mk/{from.md → to.md} RENAMED
@@ -1,28 +1,28 @@
1
  #### In general <a id="thread.req.lockable.general">[[thread.req.lockable.general]]</a>
2
 
3
  An *execution agent* is an entity such as a thread that may perform work
4
  in parallel with other execution agents.
5
 
6
- [*Note 1*: Implementations or users may introduce other kinds of agents
7
  such as processes or thread-pool tasks. — *end note*]
8
 
9
- The calling agent is determined by context, e.g. the calling thread that
10
- contains the call, and so on.
11
 
12
  [*Note 2*: Some lockable objects are “agent oblivious” in that they
13
  work for any execution agent model because they do not determine or
14
  store the agent’s ID (e.g., an ordinary spin lock). — *end note*]
15
 
16
- The standard library templates `unique_lock` ([[thread.lock.unique]]),
17
- `shared_lock` ([[thread.lock.shared]]), `scoped_lock` (
18
- [[thread.lock.scoped]]), `lock_guard` ([[thread.lock.guard]]), `lock`,
19
- `try_lock` ([[thread.lock.algorithm]]), and `condition_variable_any` (
20
- [[thread.condition.condvarany]]) all operate on user-supplied lockable
21
- objects. The `BasicLockable` requirements, the `Lockable` requirements,
22
- and the `TimedLockable` requirements list the requirements imposed by
23
- these library types in order to acquire or release ownership of a `lock`
24
- by a given execution agent.
25
 
26
  [*Note 3*: The nature of any lock ownership and any synchronization it
27
- may entail are not part of these requirements. — *end note*]
28
 
 
1
  #### In general <a id="thread.req.lockable.general">[[thread.req.lockable.general]]</a>
2
 
3
  An *execution agent* is an entity such as a thread that may perform work
4
  in parallel with other execution agents.
5
 
6
+ [*Note 1*: Implementations or users can introduce other kinds of agents
7
  such as processes or thread-pool tasks. — *end note*]
8
 
9
+ The calling agent is determined by context, e.g., the calling thread
10
+ that contains the call, and so on.
11
 
12
  [*Note 2*: Some lockable objects are “agent oblivious” in that they
13
  work for any execution agent model because they do not determine or
14
  store the agent’s ID (e.g., an ordinary spin lock). — *end note*]
15
 
16
+ The standard library templates `unique_lock` [[thread.lock.unique]],
17
+ `shared_lock` [[thread.lock.shared]], `scoped_lock`
18
+ [[thread.lock.scoped]], `lock_guard` [[thread.lock.guard]], `lock`,
19
+ `try_lock` [[thread.lock.algorithm]], and `condition_variable_any`
20
+ [[thread.condition.condvarany]] all operate on user-supplied lockable
21
+ objects. The *Cpp17BasicLockable* requirements, the *Cpp17Lockable*
22
+ requirements, and the *Cpp17TimedLockable* requirements list the
23
+ requirements imposed by these library types in order to acquire or
24
+ release ownership of a `lock` by a given execution agent.
25
 
26
  [*Note 3*: The nature of any lock ownership and any synchronization it
27
+ entails are not part of these requirements. — *end note*]
28