0% found this document useful (0 votes)
24 views

Threads

This document discusses threads and processes. It defines threads as lightweight processes that provide separate streams of execution within a single process. Threads share resources like memory and file descriptors within a process, while processes are isolated from each other. Creating threads has less overhead than processes. The pthread library allows creating and managing threads through functions like pthread_create and pthread_join.

Uploaded by

Sahil Sharma
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Threads

This document discusses threads and processes. It defines threads as lightweight processes that provide separate streams of execution within a single process. Threads share resources like memory and file descriptors within a process, while processes are isolated from each other. Creating threads has less overhead than processes. The pthread library allows creating and managing threads through functions like pthread_create and pthread_join.

Uploaded by

Sahil Sharma
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Threads

(light weight processes)

Slide courtesy:
Chester Rebeiro
IIT Madras 1
Processes
• Separate streams of execution
• Each process isolated from the
other
• Process state contains
– Process ID
– Environment
– Working directory.
– Program instructions
– Registers
– Stack
– Heap
– File descriptors
• Created by the OS using fork
– Significant overheads

2
Threads
• Separate streams of execution
within a single process
• Threads in a process not isolated
from each other
• Each thread state (thread control
block) contains
– Registers (including EIP, ESP)
– stack

3
Why threads?
• Lightweight

Cost of creating 50,000 processes / threads


(https://computing.llnl.gov/tutorials/pthreads/)
• Efficient communication between entities
• Efficient context switching

4
Threads vs Processes
• A thread has no data • A process has code, heap,
segment or heap stack, other segments
• A thread cannot live on its • A process has at-least one
own. It needs to be thread.
attached to a process
• There can be more than • Threads within a process
one thread in a process. share the same I/O, code,
Each thread has its own files.
stack
• If a thread dies, its stack is • If a process dies, all threads
reclaimed die.
Based on Junfeng Yang’s lecture slides
http://www.cs.columbia.edu/~junfeng/13fa-w4118/lectures/l08-thread.pdf
5
pthread library
Thread identifier (TID) much like
• Create a thread in a process
int pthread_create(pthread_t *thread, Pointer to a function,
const pthread_attr_t *attr, which starts execution in a
different thread
void *(*start_routine) (void *),
void *arg);
Arguments to the function

• Destroying a thread Exit value of the thread


void pthread_exit(void *retval);

6
pthread library contd.
• Join : Wait for a specific thread to complete

int pthread_join(pthread_t thread, void **retval);

TID of the thread to wait for


Exit status of the thread

what is the difference with wait()?

7
Example
How many threads are there in this
program? 3

Note. You need to link the


pthread library

8
Example
main

join(t1) t1
t2

join(t2)

You might also like