-
Notifications
You must be signed in to change notification settings - Fork 1
/
M1_Review-Chapter4
58 lines (46 loc) · 1.85 KB
/
M1_Review-Chapter4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# CSC360
Operating Systems
Midterm #1 review.
Threads - Chapter 4
*** NOTE: FOLLOWING NOTES ARE FROM LECTURES ***
ADDITIONAL READING OF TEXTBOOK IS NEEDED
WHEN OPPORTUNITY ARISES ADD MORE DETAILS TO THIS :)
------THREADS AND MUTEX------
Thread:
\-> lightweight process
\-> independent set of instructions
POSIX Threads Portable Operating System Interface:
\-> Maintains the compatibility between operating systems
\-> Defines an API for creating and manipulating threads.
Threads vs. Processes
\-> pthread uses less resources and CPU than fork() would
\-> threads able to achieve efficient communication
pThread API:
Thread management:
\-> Routines that work directly on threads - creaating detaching, joining
Synchronization (most important):
\-> Semaphores:
\->Resource counter
\-> Mutexes:
\-> Condition Variables:
Mutex:
\-> Variables that are one of the primary means of implementing synchronization and for protecting shared data when multiple writes occur.
\-> Acts like a "lock" (protects access to shared data resource
\-> initially "unlocked"
\-> if (unlocked) it becomes locked and owned by the calling thread.
\-> else if(locked) the calling thread needs to wait until it is unlocked.
Types:
\-> fast
\-> recursive
\-> errchk
Overall:
threads can lock/unlock/trylock on the mutex variable.
Functions:
\-> pthread_mutex_lock()
\-> pthread_mutex_unlock()
\-> pthread_mutex_trylock()
pthread_create()
\-> creates the thread
\-> eg. pthread_create(&threads, NULL, Function_name, Args);
pthread_join()
\-> used to tell the new thread to wait for a different thread. synchronizes threads