Thread

From Rosetta Code
Revision as of 20:45, 8 February 2008 by rosettacode>Mwn3d (Stupid case sensitivity, changed a link)

A thread is a particular flow of control within a process. A thread shares the address space with other threads in the same process, but each thread gets its own call stack and set of registers. Switching between threads within a process is a much lighter-weight operation than switching between processes. Threads can by native (provided by the operating system) or green (an abstraction provided solely by the language or threading library). Erlang and Forth provide their own threading mechanisms, and Java VMs can often be configured to use either native or green threading.

Programs can be "multi-threaded", where certain parts of the programs will compete for system resources. Threads are useful for servers, where each client connecting to a server will "spawn" a new thread for its own operations. A program can also run multiple operations concurrently, also known as forking a process. With single-core processors, multi-threading does not usually provide much of an advantage, but with multiple cores, a computer can run the threads concurrently and do multiple programs' work at once.

One of the best known threading abstractions is POSIX threads (pthreads), which are widely used on UNIX-like systems.

See also