Issues in programming concurrency
Concurrent programming involves the creation and management of
threads, and communication between them.
Distributed programming involves the creation and management
of channels between machines, and communication using them.
Sadly, some textbooks confuse the two issues.