kota's memex

Today multi-core processors are the norm, which are essentially multiple processors packed onto a single chip, usually sharing memory. Thus it is important to understand the concepts and pitfalls that come with programming these systems.

Concurrency vs Parallelism

Concurrency relates to how programs are written. Parallelism relates to how programs run.

Communicating Sequential Processes

A model for concurrent programming which had a large influence on go and other languages. In CSP, systems are composed of multiple sequential processes that are running in parallel. These processes communicate with each other synchronously, which means that a system sending a message can only continue once the other system recives it (this is exactly how unbuffered channels behave in go.)