> For the complete documentation index, see [llms.txt](https://dimitar-minchev.gitbook.io/linux-system-programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dimitar-minchev.gitbook.io/linux-system-programming/09_threads_sync/15_semaphores_synchronizing.md).

# Синхронизиране със семафори

```c
#inlude<semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_destroy(sem_t *sem);
```

* **sem\_init()** инициализира неименован семафор на адреса, посочен от аргумента **sem**. Аргументът **value** указва началната стойност на семафора.
* **sem\_wait()** декрементира (заключва) семафора, посочен от аргумента **sem**. Ако в момента семафорът има стойност нула, извикването се блокира.
* **sem\_post()** увеличава (отключва) семафора, посочен от аргумента **sem**.
* **sem\_destroy()** унищожава неименован семафор на адреса, посочен от аргумента **sem**.
