Differences

This shows you the differences between two versions of the page.

Link to this comparison view

app:laboratoare:04 [2024/10/29 02:36]
alexandru.bala [Variabile condiție]
app:laboratoare:04 [2024/10/29 02:44] (current)
alexandru.bala [Variabile condiție]
Line 386: Line 386:
 Variabilele condiție reprezintă o structură de sincronizare,​ care au asociat un mutex, și ele au un sistem de notificare a thread-urilor,​ astfel încât un thread să fie blocat până când apare o notificare de la alt thread. Pentru a putea folosi variabile condiție în pthreads ne folosim de structura ''​pthread_cond_t''​. Variabilele condiție reprezintă o structură de sincronizare,​ care au asociat un mutex, și ele au un sistem de notificare a thread-urilor,​ astfel încât un thread să fie blocat până când apare o notificare de la alt thread. Pentru a putea folosi variabile condiție în pthreads ne folosim de structura ''​pthread_cond_t''​.
  
-Variabilele condiție sunt folosite pentru a bloca thread-ul curent (mutexul și semaforul blochează celelalte thread-uri). Acestea permit unui thread să se blocheze până când o condiție devine adevărată,​ moment când condiția este semnalată de thread că a devenit adevărată și thread-ul / thread-urile blocate de condiție își reiau activitatea. O variabilă condiție va avea mereu un mutex pentru a avea race condition, care apare când un thread 0 se pregătește să aștepte la variabila condiție și un thread 1 semnalează condiția înainte ca thread-ul 0 să se blocheze+Variabilele condiție sunt folosite pentru a bloca thread-ul curent (mutexul și semaforul blochează celelalte thread-uri). Acestea permit unui thread să se blocheze până când o condiție devine adevărată,​ moment când condiția este semnalată de thread că a devenit adevărată și thread-ul / thread-urile blocate de condiție își reiau activitatea. O variabilă condiție va avea mereu un mutex pentru a avea race condition, care apare când un thread 0 se pregătește să aștepte la variabila condiție și un thread 1 semnalează condiția înainte ca thread-ul 0 să se blocheze.
  
 Funcții: Funcții:
Line 395: Line 395:
   * ''​int pthread_cond_signal(pthread_cond_t *cond);''​ - deblocarea unui thread   * ''​int pthread_cond_signal(pthread_cond_t *cond);''​ - deblocarea unui thread
   * ''​int pthread_cond_broadcast(pthread_cond_t *cond);''​ - deblocarea tuturor thread-urilor blocate   * ''​int pthread_cond_broadcast(pthread_cond_t *cond);''​ - deblocarea tuturor thread-urilor blocate
-  *  
 Exemplu folosire - producer - consumer: Exemplu folosire - producer - consumer:
 <spoiler Click pentru exemplu> <spoiler Click pentru exemplu>
Line 479: Line 478:
  srand (time (NULL));  srand (time (NULL));
  for (i = 0; i < NUM_THREADS;​ i++) {  for (i = 0; i < NUM_THREADS;​ i++) {
- type = rand () % 2;+ type = i % 2;   // ar funcționa și rand () % 2 în loc de i % 2?
  if (type == CONSUMER) {  if (type == CONSUMER) {
  pthread_create (&​tid_v[i],​ NULL, consumer_func,​ NULL);  pthread_create (&​tid_v[i],​ NULL, consumer_func,​ NULL);
app/laboratoare/04.1730162212.txt.gz · Last modified: 2024/10/29 02:36 by alexandru.bala
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0