etc-sodtr / PushButton-Game

0 stars 0 forks source link

Crearea unui semafor #3

Closed norbertlajtai closed 7 years ago

norbertlajtai commented 7 years ago

Mă poate ajuta cineva la crearea unui semafor binar? In demo-ul meu am încercat să creez un semafor binar (xSemaphoreCreateBinary), care nu poate fi "obținut" cu funcția "xSemaphoreTake()". Însă, dacă folosesc un mutex (xSemaphoreCreateMutex), programul merge. Nu am reușit să ințeleg de ce merge cu mutex și nu merge cu un semafor simplu binar. Exemplul poate fi găsit în fișierul ethernet_demo.c

kcs commented 7 years ago

Semaforul binar este inițializat cu 0, deci trebuie "dat" (up) înainte să fie "obținut" (down). Mai există și alte diferențe față de mutex (de exemplu moștenirea priorităților) care de obicei înseamnă că ele au nevoie de abordări diferite în folosirea lor: mutex pentru excludere mutuală, semafor pentru sincronizare inter-task. Vezi http://www.freertos.org/xSemaphoreCreateBinary.html pentru mai multe detalii.

norbertlajtai commented 7 years ago

Mulțumesc pentru răspuns @kcs !