> For the complete documentation index, see [llms.txt](https://davidjosearaujo.gitbook.io/notes-mcs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://davidjosearaujo.gitbook.io/notes-mcs/analysis-and-exploration-of-vulnerabilities/concurrency/concurrency.md).

# Concurrency

Current operational environments are typically distributed:

* composed by multiple systems.
* distributed information/resources.
* distributed clock.

**Algorithms** are frequently developed as **actions that use those resources**.

* Commonly mapped to sequential actions.

However... interactions/side effects between systems can make some “naive“ assumptions false.

* Information is available on demand.
* Writing to an object makes it available to other components.
* Time flows in a single direction.

Even if algorithms account for the distributed execution, **side effects** may be present.

* Variable access latency.
* Variable execution paths.
* Variable object metadata.
* Variable locks.

Side effects can affect execution or disclose information between domains.

* How an algorithm is implemented, what it is doing.
* Keys used.
* Users active.
