andersch.dev

<2025-04-14 Mon>

Semaphore

Semaphores are synchronization primitives used to control access to shared resources in concurrent programming. They maintain a counter that represents the number of available resources.

Main types:

Core operations:

Basic Semaphore API

typedef struct {
    int value;
    /* ... */
} semaphore;

void sem_init(semaphore *sem, int value);
void sem_wait(semaphore *sem);
int  sem_trywait(semaphore *sem); // non-blocking
void sem_post(semaphore *sem);
int  sem_value(semaphore *sem, int *sval);
void sem_destroy(semaphore *sem);