Класс Semaphore осуществляет синхронизацию потоков с помощью объектов ядра Windows. Он используется когда нескольким потокам требуется доступ к ресурсу или к пулу ресурсов. Отличительная особенность данного класса является то, что он предоставляет одновременный доступ нескольких потоков к ресурсу. Из-за использования объектов ядра Semaphore может быть использован в межпроцессной синхронизации.