This shows you the differences between two versions of the page.
|
app:laboratoare:04 [2024/10/29 02:44] alexandru.bala [Variabile condiție] |
app:laboratoare:04 [2025/11/12 05:03] (current) alexandru.bala [Variabile condiție] |
||
|---|---|---|---|
| Line 178: | Line 178: | ||
| void *f(void *arg) | void *f(void *arg) | ||
| { | { | ||
| - | // facem lock pe mutex | + | // facem lock pe mutex |
| pthread_mutex_lock(&mutex); | pthread_mutex_lock(&mutex); | ||
| - | // zona critica | + | // zona critica |
| a += 2; | a += 2; | ||
| - | // facem unlock pe mutex | + | // facem unlock pe mutex |
| pthread_mutex_unlock(&mutex); | pthread_mutex_unlock(&mutex); | ||
| Line 194: | Line 194: | ||
| int arguments[NUM_THREADS]; | int arguments[NUM_THREADS]; | ||
| - | // cream mutexul | + | // creăm mutex-ul |
| pthread_mutex_init(&mutex, NULL); | pthread_mutex_init(&mutex, NULL); | ||
| Line 261: | Line 261: | ||
| for (i = 0; i < NUM_THREADS; i++) { | for (i = 0; i < NUM_THREADS; i++) { | ||
| pthread_join(threads[i], &status); | pthread_join(threads[i], &status); | ||
| - | } | + | } |
| pthread_barrier_destroy(&barrier); | pthread_barrier_destroy(&barrier); | ||
| + | |||
| return 0; | return 0; | ||
| } | } | ||
| Line 358: | Line 360: | ||
| pthread_mutex_init (&mutex, NULL); | pthread_mutex_init (&mutex, NULL); | ||
| - | |||
| sem_init (&full_sem, 0, 0); | sem_init (&full_sem, 0, 0); | ||
| sem_init (&empty_sem, 0, 3); | sem_init (&empty_sem, 0, 3); | ||
| Line 376: | Line 377: | ||
| } | } | ||
| - | pthread_mutex_destroy(&mutex); | + | sem_destroy (&empty_sem); |
| + | sem_destroy (&full_sem); | ||
| + | pthread_mutex_destroy (&mutex); | ||
| return 0; | return 0; | ||
| Line 490: | Line 493: | ||
| } | } | ||
| + | pthread_cond_destroy (&empty_cond, NULL); | ||
| + | pthread_cond_destroy (&full_cond, NULL); | ||
| pthread_mutex_destroy(&mutex); | pthread_mutex_destroy(&mutex); | ||