The library describes a standard set of requirements for executors. A type meeting Executor requirements shall embody a set of rules for determining how submitted function objects are to be executed.
An executor type X
shall
satisfy the requirements of CopyConstructible
(C++ Std, [copyconstructible]) types. No constructor, comparison operator,
copy operation, move operation, swap operation, or member functions context
, on_work_started
and on_work_finished
on these
types shall exit via an exception.
The executor copy constructor, comparison operators, and member functions defined in these requirements shall not introduce data races as a result of concurrent calls to those functions from different threads.
In the table below, X
denotes
an executor class, x
denotes
a value of type X&
,
x1
and x2
denote values of type const X&
,
x3
denotes a value of type
X&&
,
f
denotes a MoveConstructible
(C++ Std, [moveconstructible])
function object callable with zero arguments, a
denotes a value of type A
meeting Allocator
requirements
(C++ Std, [allocator.requirements]), t
denotes an object of type T
,
and u
denotes an identifier.
Table 12. Executor requirements
expression |
type |
assertion/note |
---|---|---|
|
Shall not exit via an exception. |
|
|
Shall not exit via an exception. |
|
|
|
Shall not exit via an exception. |
|
|
Shall not exit via an exception. |
|
|
Shall not exit via an exception. |
|
Shall not exit via an exception. |
|
|
Shall not exit via an exception. |
|
|
Effects: Calls |
|
|
Effects: Calls |
|
|
Effects: Calls |