Tasks tend to be more sophisticated and powerful than other BIOS thread types. Unlike hardware and software interrupts, tasks can block, which means they can allow other threads to execute when waiting for some kind of event to occur, or just because another thread has a higher priority. “Another thread” includes hardware and software interrupts, which can coexist in the same application as tasks. Like other BIOS objects, a programmer has the choice on whether tasks will be created statically in the application’s configuration, or dynamically during run-time. Tasks have an assigned priority so that they can preempt or be preempted by other tasks, and this assigned priority can be changed during runtime based on the needs of the application. The BIOS scheduler always determines which thread is the one actually executing at any given time, and it will do this based on the thread’s priority level and whether or not it is blocked while waiting for an event.