Using multiple processes for computation.

Concurrent algorithm guaranteeing bounded progress.

Function invoked after an operation or event.

Switching CPU execution between tasks.

Object whose state cannot change after creation.

Object representing a future asynchronous result.

Result depending on unpredictable execution timing.

Object whose state can change.

Placeholder for a value available later.

Tasks permanently waiting for each other.