10.2 Synchronization
Racket’s synchronization toolbox spans three layers:
- synchronizable events — - a general framework for synchronization; 
- channels — - a primitive that can be used, in principle, to build most other kinds of synchronizable events (except the ones that compose events); and 
- semaphores — - a simple and especially cheap primitive for synchronization.