Multithreading and multiprocessing
SST supports multiprocessing to the same degree as normal Smalltalk. SST supports multithreading through user threads (Smalltalk processes) and asynchronous C callout (ACO) facilities using OS threads. Calls to blocking OS resources (for example, TCP Sockets) do not block the entire VM and all other running Smalltalk processes. Only the Smalltalk process initiating the OS call is blocked.
Internally, SST is fully multithreaded. Supplied dispatchers (such as threaded or pooled dispatchers), for example, use several user threads (Smalltalk processes) to execute requests. All SST components are thread safe, and are (with some exceptions) reentrant.
The base Smalltalk class libraries, however, are not as a rule thread-safe. SST applications therefore must be careful to avoid race conditions and other concurrency problems.
Since all Smalltalk code is run in one OS thread (and process), SST cannot take advantage of parallel processing resources such as SMP machines. As a result, a single VM running multiple server applications in the same Smalltalk image cannot be load balanced by the OS.
Last modified date: 01/29/2015