Encyclopedia > Multithreading

  Article Content

Thread (computer science)

Redirected from Multithreading

Many programming languages, operating systems, and other software development environments support what are called "threads" of execution. Threads are similar to processes, in that both represent a single sequence of instructions executed in parallel with sequences, either by time slicing[?] or multiprocessing. This allows a program to split itself into two or more simultaneously running tasks.

Threads are distinguished from traditional multi-tasking processes in that processes are typically independent, carry considerable state information, and interact only through system-provided inter-process communication mechanisms. Multiple threads, on the other hand, typically share the state information of a single process, share memory and other resources directly. On operating systems that have special facilities for threads, it is typically faster for the system to context-switch between different threads in the same process than to switch between different processes.

An advantage of a multi-threaded program is that it can operate faster on machines that have multiple CPUs, or across a cluster of machines. This is because the threaded nature of the algorithms allow true simultaneous and independent processing. In such a case, the programmer needs to be careful to avoid race conditions, and other non-intuitive behaviors. In order for data to be correctly manipulated, threads will often need to rendezvous in time in order to process the data in the correct order. Threads may also require atomic operations (often implemented using semaphores) in order to prevent data from being simultaneously modified, or read while in the process of being modified. Careless use of such primitives can lead to deadlocks.

Use of threads in programming often causes a state inconsistency. A common anti-pattern is to set a global variable, then invoke subprograms that depend on its value. This is known as accumulate and fire.

See also: Thread safety

The Java programming language is an example of a computer language which supports multi-threaded programs.

A relatively new concept, introduced in Intel's Pentium 4 3.06 GHz processor, is the Intel Hyper-threading

The term "thread" is used in a completely different sense in Forth. There it means a form of code consisting entirely of subroutine calls, written without the subroutine call instruction, and processed by an interpreter.

All Wikipedia text is available under the terms of the GNU Free Documentation License

  Search Encyclopedia

Search over one million articles, find something about almost anything!
  Featured Article

... Samsu-iluna[?], son of Khammurabi, c. 1900 BC, and from that time until the close of the Babylonian period it was a subject city of Babylon. Loftus conducted excavations ...