Основною метою використання семафора є синхронізація процесів і контроль доступу до загального ресурсу в паралельному середовищі. Початкове значення семафора залежить від проблеми. Зазвичай ми використовуємо кількість доступних ресурсів як початкове значення.
Зазвичай використовуються семафори координувати доступ до ресурсів, з ініціалізацією кількості семафорів кількістю вільних ресурсів. Потім потоки атомарно збільшують кількість, коли ресурси додаються, і атомарно зменшують кількість, коли ресурси видаляються.
Мьютекс — це те ж саме, що і блокування, але він може бути загальносистемним (спільним для кількох процесів). Семафор робить те саме, що й м'ютекс, але дозволяє вводити x кількість потоків, це можна використовувати, наприклад, для обмеження кількості одночасно запущених завдань із інтенсивним використанням процесора, вводу-виводу чи оперативної пам’яті.
Використовуються семафори реалізувати критичні розділи, які є областями коду, які повинні виконуватися лише одним процесом за раз. Використовуючи семафори, процеси можуть координувати доступ до спільних ресурсів, таких як спільна пам'ять або пристрої введення/виведення.
Семафори були прийняті та широко використовувані (з ручними прапорцями, які замінили механічні важелі затворних семафорів) у морському світі в 19 столітті. Його використовують досі під час поповнення в морі і прийнятний для екстреного зв'язку вдень або за допомогою запалених жезлів замість прапорців вночі.
Семафор є спосіб надсилання повідомлень людям, яких ви бачите, але знаходяться надто далеко, щоб з ними поговорити. Використовуючи руки (або прапорці), ви можете складати слова – кожна позиція означає окрему букву.