Thread

From Rosetta Code
Revision as of 03:37, 19 November 2008 by rosettacode>Mwn3d (Reorg, wp 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. A multi-threaded program can run multiple operations concurrently. 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.

Threads are useful for servers, where each client connecting to a server will "spawn" a new thread for its own operations.

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

See also