Presentation is loading. Please wait.

Presentation is loading. Please wait.

Professor: Shu-Ching Chen TA: Hsin-Yu Ha.  An independent stream of instructions that can be scheduled to run  A path of execution int a, b; int c;

Similar presentations


Presentation on theme: "Professor: Shu-Ching Chen TA: Hsin-Yu Ha.  An independent stream of instructions that can be scheduled to run  A path of execution int a, b; int c;"— Presentation transcript:

1 Professor: Shu-Ching Chen TA: Hsin-Yu Ha

2  An independent stream of instructions that can be scheduled to run  A path of execution int a, b; int c; a = 1; b = a + 2; c = 3; Sequentially execute int a, b; a = 1; b = a + 2; int c; c = 5; CPU Multi-Thread Single-Thread CPU

3  Program  An execution file stored in the harddrive  Process  An execution file stored in the Memory  Thread  An execution path of part of the process HDD Memory ProgramProcessThread

4  Parallel execution  Shared resources  Easier to create and destroy than processes (100X)  Easy porting to multiple CPUs

5  Standardized C language threads programming interface for UNIX systems  Four major groups  Thread management: Routines that work directly on threads - creating, detaching, joining, etc.  Mutex: Routines that deal with synchronization. Mutex functions provide for creating, destroying, locking and unlocking mutexes.  Condition variable: Routines that address communications between threads that share a mutex.  Synchronization: Routines that manage read/write locks and barriers.

6  pthread_create() Return 0 if OK, nonzero on error  Four Arguments ▪ Thread : A thread identifier ▪ Attr : A pointer to a thread attribute object ▪ Start_routine : A pointer to the function the thread executes ▪ Arg : The argument to the function

7  Single variable

8  Several variables

9  pthread_exit() Return 0 if OK, nonzero on error  Four ways of terminating a thread  The thread returns from its starting routine  The thread makes a call to the pthread_exit subroutine  The thread is canceled by another thread  The entire process is terminated  If main() finishes first, without calling pthread_exit

10  Example of pthread_exit()

11  pthread_join() Return 0 if OK, nonzero on error  Wait from other threads to terminate by calling it

12

13  pthread_self()  It returns the unique, system assigned thread ID of the calling thread  pthread_detach() Return 0 if OK, nonzero on error  It can be used to explicitly detach a thread

14  Join  Mutexes  Condition variables

15  Mutexes are used  to prevent data inconsistencies due to operations by multiple threads upon the same memory area performed at the same time  to prevent race conditions where an order of operation upon the memory is expected

16

17

18  Condition variables are used  to allow threads to synchronize based upon the actual value of data without continually polling to check whether the condition if met  in conjunction with a mutex lock

19

20  POSIX Threads Programming  https://computing.llnl.gov/tutorials/pthreads/ https://computing.llnl.gov/tutorials/pthreads/  Pthreads primer  er.html er.html  POSIX thread (pthread) Tutorial  alPosixThreads.html alPosixThreads.html

21  Tutorial - Wiki  Tutorial and sample code - C++ Multithreading - Multithreading pthread - Posix threads C - Code project  Tutorial Youtube Video - C++ Multithreading Pt C++ Multithreading Pt. 2


Download ppt "Professor: Shu-Ching Chen TA: Hsin-Yu Ha.  An independent stream of instructions that can be scheduled to run  A path of execution int a, b; int c;"

Similar presentations


Ads by Google