Skip to content
UoL CS Notes

Threads

COMP124 Lectures

A thread is an independent and parallel part of a process.

Each thread has its own:

  • Program counter
  • Stack space

However, unlike a process, threads share:

  • Program code
  • Data
  • Open files and other system resources

with the other member threads in the process.

Threads are handled at a higher level than processes, and can be switched without involvement of the operating system kernel.

  • If this is the case, thread switching is very rapid and efficient. such threads are known as user-level threads.

Threads are especially important for the development of event-driven programs.

Topology

A thread can be through of as a lightweight process.

Threads are created within a normal process.

Independent tasks can be split from the main process into individual threads.

Benefits

  • Ease of Programming (modularity)
    • Many applications need to perform several distinct tasks simultaneously. Much easier to create one separate thread per task, than to attempt to do them all within one linear program.
  • Responsiveness
    • In a multi-threaded interactive application a program may be able to continue executing, even if part of it is blocked.
      • In a web browser: user waiting for image to download, but can still interact with another part of the page.
  • Resource Sharing
    • Threads share memory and resources of the process they belong to, thus we have several threads all within the same address space.
  • Economy
    • Threads are more economical to create and context switch as they share the resources of the processes to which they belong.
  • Utilisation of Parallel Architectures
    • In a multiprocessor architecture, where each thread may be running in parallel on a different processor, the benefits of multi-threading can be increased.