A program will normally perform its computations and then wait for an event (e.g. a message, time, or external I/O event) before continuing.