Notes on Synchronized List Class

Notes on Synchronized List Class - Class • Te sema_wait...

Info iconThis preview shows pages 1–4. Sign up to view the full content.

View Full Document Right Arrow Icon
Notes on Synchronized List Class We need the mutex lock to enforce atomicity in the critical sections a) b) and c) d). The semaphore is not enough to enforce atomicity.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Notes on Synchronized List Class int MTList::remove(){ ListEntry *tmp; sema_wait(&_emptySem); pthread_mutex_lock(&_mutex); c)tmp = _head; d)head=tmp->_next; pthread_mutex_unlock(&mutex); int val=tmp->_val; delete tmp; return val; } N (N= items in list) >N 1
Background image of page 2
Notes on Synchronized List
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Background image of page 4
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Class • Te sema_wait() call has to be done outside the mutex_lock/unlock section. • Otherwise we can get a deadlock. • Example: pthread_mutex_lock(&_mutex); sema_wait(&_empty); c)tmp = _head; d)head=tmp->_next; pthread_mutex_unlock(&mutex); Notes on Synchronized List Class T1 T2 remove() mutex_lock sema_wait(&_empty) wait for sema_post from T2 insert(5) pthread_mutex_lock() wait for mutex_unlock in T1...
View Full Document

{[ snackBarMessage ]}

Page1 / 4

Notes on Synchronized List Class - Class • Te sema_wait...

This preview shows document pages 1 - 4. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online