SemaphoreSlim заснований на SpinWait і Monitor, тому потік, який чекає придбання блокування, певний час записує цикли процесора, сподіваючись придбати замок, перш ніж перейти до іншого потоку. Якщо цього не відбувається, то потоки дозволяють системам перемикати контекст і намагаються знову (спалюючи деякі цикли процесора), як тільки ОС знову планує цю нитку. Якщо довго чекати, ця модель може прогоріти через значну кількість циклів процесора. Тож найкращий сценарій для такої реалізації - це тоді, коли більшість часу немає часу очікування і ви можете майже миттєво придбати замок.
Semaphore покладається на реалізацію в ядрі ОС, тому кожен раз, коли ви придбаєте замок, ви витрачаєте досить багато процесорних циклів, але після цього потік просто спить стільки, скільки потрібно, щоб отримати замок.