|
|
![]() | Coroutines: Each coroutine has its own stack and
program counter but only one of them is active. Coroutines
can transfer execution to another coroutine. Advantage: No support of the operating system needed. Low overhead. Disadvantage: Coroutines do not speed up the computation. |
![]() | Threads: The operating system (or virtual machine)
maintains several execution threads (each with its
own stack and program counter) in one address space. Advantage: Speeds up computation on a multi-processor system. Disadvantage: C. A. R. Hoare, Communicating Sequential Processes: ``In its full generality, multithreading is an incredibly complex and error-prone technique, not to be recommended in any but the smallest programs.'' |
![]() | Processes: Like threads but each thread has its own
address space. Advantage: Correctness can be far easier proved using the techniques from Hoare and Milner. Disadvantage: The communication between the concurrent entities is more complex. |
![]() | Distributed System: Multiple processes on different
computers on a network. Advantage: Scalable up to the extent of the entire Internet (see http://distributed.net/, for example). Disadvantage: Communications become more complex and network problems introduce new sorts of failures. |
|
| Copyright © 2001, 2002 Andreas Borchert, converted to HTML on February 21, 2002 |