Differences

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

Link to this comparison view

patr:laboratoare:11 [2022/01/13 13:57]
alexandru.ionita99
patr:laboratoare:11 [2022/01/13 14:04] (current)
alexandru.ionita99 [Utilizare]
Line 30: Line 30:
 ==== Declarare ==== ==== Declarare ====
  
-După cum am specificat anterior, există câteva diferențe între semafoarele binare și mutexuri. Întrucât pot fi deblocate de orice task, semafoarele binare sunt mai potrivite atunci când avem nevoie de o sincronizare a două taskuri. De exemplu, un task mai rapid poate fi blocat la un semafor până când un task mai lent ajunge într-un punct în care îl deblochează. \\+După cum am specificat anterior, există câteva diferențe între semafoarele binare și mutexuri. Întrucât pot fi deblocate de orice task, semafoarele binare sunt mai potrivite atunci când avem nevoie de o sincronizare a două taskuri. \\
  
-Pe de altă parte, mutexurile sunt utilizate în principal pentru gestionarea accesului la o resursă partajată și sunt create cu ajutorul funcției ** xSemaphoreCreateMutex()**,​ care alocă spațiu în heap.  Dacă valoarea întoarsă este NULL, nu există suficientă memorie disponibilă. \\+Pe de altă parte, mutexurile sunt utilizate în principal pentru gestionarea accesului la o resursă partajată și sunt create cu ajutorul funcției **xSemaphoreCreateMutex()**,​ care alocă spațiu în heap.  Dacă valoarea întoarsă este NULL, nu există suficientă memorie disponibilă. \\
  
 **Exemplu:​** **Exemplu:​**
Line 55: Line 55:
 ==== Utilizare ==== ==== Utilizare ====
  
-Următoarele ​funcții ​sunt de interes: +Pentru a lucra cu mutexurile, se utilizează același ​funcții ​ca în cazul semafoarelor. Funcțiile ​de interes ​sunt: 
-  * Pentru a afla valoarea unui semafor, este utilizată funcția ​**UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore )** + 
-  * Pentru a crește valoarea unui semafor, este utilizată funcția ​**BaseType_t xSemaphoreGive( SemaphoreHandle_t xSemaphore )** +  * **UBaseType_t uxSemaphoreGetCount( SemaphoreHandle_t xSemaphore )** - întoarce valoarea mutexului (0 sau 1) 
-  * Pentru a scădea valoarea unui semafor, este utilizată funcția ​**BaseType_t xSemaphoreTake( SemaphoreHandle_t xSemaphore, TickType_t xTicksToWait)**. Al doilea parametru specifică timpul maxim pe care un task îl poate petrece așteptând deblocarea ​semaforului. După depășirea acestui timp, taksul își continuă execuția +  * **BaseType_t xSemaphoreGive( SemaphoreHandle_t xSemaphore )** - eliberează mutexul 
-  * Pentru a șterge un semafor, este utilizată funcția ​**void vSemaphoreDelete( SemaphoreHandle_t xSemaphore )**+  * **BaseType_t xSemaphoreTake( SemaphoreHandle_t xSemaphore, TickType_t xTicksToWait)** ​- blochează mutexul. Al doilea parametru specifică timpul maxim pe care un task îl poate petrece așteptând deblocarea ​mutexului, dacă este deja blocat de un alt task. După depășirea acestui timp, taksul își continuă execuția 
 +  * **void vSemaphoreDelete( SemaphoreHandle_t xSemaphore )** - șterge mutexul referit prin handle
  
 <note tip>​Funcțiile **Give** și **Take** întorc două valori posibile: **pdPASS** dacă operația a fost realizată cu succes sau **pdFAIL** dacă nu.</​note>​ <note tip>​Funcțiile **Give** și **Take** întorc două valori posibile: **pdPASS** dacă operația a fost realizată cu succes sau **pdFAIL** dacă nu.</​note>​
patr/laboratoare/11.1642075057.txt.gz · Last modified: 2022/01/13 13:57 by alexandru.ionita99
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