Skip to content

Commit

Permalink
locks19
Browse files Browse the repository at this point in the history
  • Loading branch information
sujaypat committed Oct 5, 2016
1 parent c6a8927 commit e8d8dd6
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
7 changes: 4 additions & 3 deletions luscious_locks/barrier.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ int barrier_wait(barrier_t *barrier) {
pthread_mutex_lock(&(barrier -> mtx));
barrier -> count++;
if(barrier -> count == barrier -> n_threads) pthread_cond_broadcast(&(barrier -> cv));
else{
while(barrier -> count < barrier -> n_threads) pthread_cond_wait(&(barrier -> cv), &(barrier -> mtx));
}
else while(barrier -> count < barrier -> n_threads) pthread_cond_wait(&(barrier -> cv), &(barrier -> mtx));
pthread_mutex_unlock(&(barrier -> mtx));



return 0;
}
8 changes: 6 additions & 2 deletions luscious_locks/semamore.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@ void semm_init(Semamore *s, int value, int max_val) {
*/
void semm_wait(Semamore *s) {
pthread_mutex_lock(&s -> m);
s -> value--;

while(s -> value == 0){
pthread_cond_wait(&s -> cv, &s -> m);
}
s -> value--;
pthread_cond_broadcast(&s -> cv);
pthread_mutex_unlock(&s -> m);
}

Expand All @@ -41,10 +43,12 @@ void semm_wait(Semamore *s) {
*/
void semm_post(Semamore *s) {
pthread_mutex_lock(&s -> m);
s -> value++;

while(s -> value == s -> max_val){
pthread_cond_wait(&(s -> cv), &(s -> m));
}
s -> value++;
pthread_cond_broadcast(&s -> cv);
pthread_mutex_unlock(&s -> m);
}

Expand Down

0 comments on commit e8d8dd6

Please sign in to comment.