Polling is a technique used in software/firmware, where a program enters a loop to repeatedly check a value (i.e., a device register or memory address) for something new (like a status). This is a powerful primitive, but has some limitations.
For a busy loop, we are often sure that we know fairly quickly that a value is “ready” if we continuously poll it. It is also an easy synchronisation primitive to write and is not risky if the system is quiet during polling.
However, the thread is only doing a single task, so it cannot perform other useful tasks. This is especially problematic when there is a single thread running (as in some embedded systems). In these low-level, low-latency systems, this motivates the idea of interrupts, which allows devices to alert the processor when something new happens.
Interrupts aren’t really a construct in higher abstraction systems, so polling is instead the next easiest thing to do. As a result, lots of software relies on blocking operations, which yields control back to the runtime/OS to do the operation, and re-schedule the software when done.
Miscellaneous
