This is an old revision of the document!
FreeRTOS conține un API specializat în crearea și apelarea semafoarelor, denumit Semaphore API. După cum ați observat în cadrul laboratorului de C POSIX cu același subiect, semafoarele și mutexurile pot fi utilizate pentru sincronizarea task-urilor, accesul la resurse partajate, dar și alte tipuri de semnalizări (similar cu rolul semafoarelor fizice :) ).
FreeRTOS utilizează următoarele tipuri de semafoare, pe care le vom detalia în continuare:
Semafoarele binare și mutexurile sunt similare, dar prezintă două diferențe principale:
În schimb, semafoarele binare blocate pot fi deblocate de orice alt task și nu există un mecanism de prioritizare.
Toate tipurile de semafore, similar altor elemente din FreeRTOS, sunt referite cu ajutorul handle-urilor. În plus, pentru a le utiliza, este necesară declararea bilbiotecii semphr.h, alături de clasica Arduino_FreeRTOS.h.
// Include biblioteca FreeRTOS #include <Arduino_FreeRTOS.h> // Include biblioteca pentru semafoare #include <semphr.h> // Declară o variabilă globală de tipul SemaphoreHandle_t SemaphoreHandle_t semafor;
În Documentația oficială FreeRTOS, API-ul corespunzător este prezentat începând cu pagina 208, împreună cu exemple de utilizare pentru fiecare funcție.
class NumeClasa { //cod friend TIP_RETURNAT NUME_FUNCTIE(ARGUMENTE); //cod };