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.