Julia supports three main categories of features for concurrent and parallel programming:
- Asynchronous "tasks", or coroutines
- Distributed computing
Julia Tasks allow suspending and resuming computations for I/O, event handling, producer-consumer processes, and similar patterns. Tasks can synchronize through operations like
fetch, and communicate via
Multi-threading functionality builds on tasks by allowing them to run simultaneously on more than one thread or CPU core, sharing memory.
Finally, distributed computing runs multiple processes with separate memory spaces, potentially on different machines. This functionality is provided by the
Distributed standard library as well as external packages like