The ability of a computer operating system to execute different tasks of a program, called threads, simultaneously. A “thread” is a set of tasks defined by an application. Sharing a single CPU between multiple, similar tasks minimizes the time required to switch threads. This is accomplished by sharing as much as possible of the program execution environment between the different threads so that very little information needs to be saved or restored when changing threads. Note that this only works with software that has been written to take advantage of multi-threading.
On a computer with a single CPU, physically speaking only one task can be addressed during each CPU cycle. Multi-threading creates a “virtual” second CPU by taking over management of individual threads and “scheduling” when they pass through the CPU. It’s sort of a halfway house between a single processor and two independent processors. An example of multi-threading might be its ability to hide latency by keeping the processor busy with one thread that issues a long-latency instruction on which subsequent instructions in that thread depend.
Multi-threaded programs become even more powerful on computers with multiple CPUs. For example, an audio program might exercise the option of routing plug-in effects handling to processor “B” while processor “A” handles other recording and playback chores. Further, the application can manage multiple threads on each processor simultaneously.
Multi-threading differs from multitasking in that threads share more of their environment with each other than do separate tasks under multitasking. Threads may share a single address space and set of global variables and be distinguished only by the value of their program counters and pointers. There is thus very little protection of one thread from another, in contrast to multitasking.
Both Windows XP and Mac OS X operating systems support multi-threaded applications and are capable of handling multiple CPUs. Intel has developed its own advanced version of multi-threading, called Hyper-Threading, which enhances performance on both single and multiple processor machines. Different audio programs offer varying levels of multi-threading support ranging from “None” to “Lots” but with the coming avalanche of multiple-CPU hardware and increasing processing demands it’s likely most applications will incorporate this feature within the next rounds of upgrades.