Control Flow, or Task Graph traversal; concurrent programming:

Task graphs are rooted digraphs used in computer science as a representation of the paths that might be traversed in a program during its execution.

Some implementations utilize concurrent programming; the core concept is the encapsulation of concurrent threads of execution, such that the encompassing kernel, user threads, or processes; with control flow constructs that have clear entry and exit points and that ensure all spawned threads have completed before exit. The concept is analogous to structured programming, which introduced control flow constructs that encapsulated sequential statements and subroutines. Such encapsulation allows errors in concurrent threads to be propagated to the control structure’s parent scope and managed by the native error handling mechanisms for a computer language.  It allows control flow to remain readily evident by the structure of the source code despite the presence of concurrency. This model must be applied consistently throughout all levels of the program, or concurrent threads may leak out, become orphaned, or fail to have proper runtime errors.  There is also the concept of limited resources, such that task graphs cannot execute if insufficient resources exist.  This is similar to Intel’s hyper-threading for task graph vertices?  It implies the vertices retain status of executing resources to prevent over-subscription.

The concept was formulated in 2016 by Martin Sústrik, creator of ZeroMQ, then further refined in 2018 by Nathaniel Smith (Trio).  Similarly, Roman Elizarov independently came upon the same ideas while developing an experimental coroutine library for the Kotlin language.  In 2019, the loom project from OpenJDK adopted structured concurrency to bring it to the Java platform in a future release as part of a larger effort for lightweight threads and coroutines.  In 2020, Apple’s Swift language also adopted structured thread concurrency.

VisualSim has the ability to execute task graphs, including the ability to monitor resource availability for a specific task graph. 

Web: https://en.wikipedia.org/wiki/Directed_graph