> For the complete documentation index, see [llms.txt](https://xiaoyang-liu.gitbook.io/programming-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xiaoyang-liu.gitbook.io/programming-notes/computer-science/computer-systems/concurrent-programming.md).

# Concurrent Programming

Modern operating systems provide three basic approaches for building concurrent programs.

* Process: Each logical control flow is a process that is scheduled and maintained by the kernel.
* I/O multiplexing: Applications explicitly schedule their own logical flows in the context of a single process.
* Threads: Threads are logical flows that run in the context of a single process and are scheduled by the kernel.
