A scheduler is a software component responsible for starting tasks at a given time. Many different scheduler implementations are possible, from very low-level and short-term (an operating system CPU or I/O scheduler) to high-level and long-term (a background application launcher).
The term 'scheduler', as applied to computer programming, has quite a few different meanings:
Low-level scheduling of system resources, such as CPU threads or I/O requests. This type of scheduler is usually tuned to emphasize a certain performance metric, such as responsiveness or data throughput. Real-time schedulers, which provide hard response time guarantees, are a specialized class of scheduler.
Process scheduling, whereby the OS assigns (usually using a round-robin algorithm) time slices to applications, enabling resource sharing.
Application-level scheduling, often used to update user-visible information on a regular basis. This is usually done using a timer which fires an event at regular intervals.
Task scheduling, using a background service with an associated user interface, allowing end-users to automatically start applications at a given time, and review the execution history of each application.
Because 'scheduler' is such an overloaded term, it may be wise to also include a more specific tag which better indicates the use scenario, such as multithreading, timer, event or scheduled-tasks