Теория
Какие примитивы синхронизации вы знаете и чем Semaphore отличается от SemaphoreSlim?
В контексте асинхронного программирования в C# классы Semaphore и SemaphoreSlim используются для ограничения количества потоков, которые могут одновременно получить доступ к ресурсу, но между ними есть важные отличия:
Читать ответ