Content deleted Content added
No edit summary |
No edit summary |
||
Line 1:
Many [[programming language]]s, [[operating system]]s, and other software development environments support what are called "'''threads'''" of execution. Threads are similar to [[computer process|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 [[computer process|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
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 condition]]s, 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 an [[atomic]] operation known as a [[semaphore (programming)|semaphore]] 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 [[deadlock]]s.
|