A source of asynchronous events for a thread. Input sources can be port-based or manually triggered and must be attached to the thread’s run loop.