A signal is an event which contains a collection of listeners (called slots). When a signal is called, that call will be propagated to each attached slot in a synchronous manner. It is legal for a slot to call a signal's attach and detach methods when it is signaled. When this occurs, attach events will be queued and processed after the signal has propagated to all slots, but detach events are processed immediately. This ensures that it is safe for slots to be deleted at any time, even within a slot routine.
The signal module provides a basic implementation of the listener pattern using the "Signals and Slots" model from Qt.