Process vs Threads
Both threads and processes are methods of parallelizing an application.
However, processes are independent execution units that contain their
own state information, use their own address spaces, and only interact
with each other via interprocess communication mechanisms (generally
managed by the operating system). Applications are typically divided
into processes during the design phase, and a master process explicitly
spawns sub-processes when it makes sense to logically separate
significant application functionality. Processes, in other words, are an
architectural construct.
By contrast, a thread is a coding construct that doesn't affect the
architecture of an application. A single process might contains multiple
threads; all threads within a process share the same state and same
memory space, and can communicate with each other directly, because they
share the same variables.
Threads typically are spawned for a short-term benefit that is usually
visualized as a serial task, but which doesn't have to be performed in a
linear manner (such as performing a complex mathematical computation
using parallelism, or initializing a large matrix), and then are
absorbed when no longer required. The scope of a thread is within a
specific code module—which is why we can bolt-on threading without
affecting the broader application.
No comments:
Post a Comment