Detailed Description
Execution categories describe the forward progress behavior of groups of execution agents without regard to the thread on which an individual agent executes.
Each execution agent within a group of such agents is associated with a function invocation. This function invocation depends on the context in which execution agents are created; for example, the group of function invocations created by bulk_invoke().
Execution categories describe the ordering of these function invocations with respect to one another.
- sequenced: Invocations are sequenced.
- concurrent: Unblocked invocations make progress.
- parallel: When invocations occur on the same thread, they are sequenced. When invocations occur on different threads, they are unsequenced.
- unsequenced: Invocations are unsequenced.
Execution categories are represented in the C++ type system using tag types. Different components of Agency use these types to reason about forward progress guarantees and validate that forward progress guarantees satisfy forward progress requirements.
Classes | |
struct | agency::sequenced_execution_tag |
Type representing the sequenced execution category. More... | |
struct | agency::concurrent_execution_tag |
Type representing the concurrent execution category. More... | |
struct | agency::parallel_execution_tag |
Type representing the parallel execution category. More... | |
struct | agency::unsequenced_execution_tag |
Type representing the unsequenced execution category. More... | |