Как использовал семафоры или аналогичные механизмы в других языках
Python
Junior
Без компании
Как использовал семафоры или аналогичные механизмы в других языках
Ответы
В Python семафоры используются для ограничения количества потоков, которые могут одновременно получить доступ к ресурсу. Чаще всего применяется `threading.Semaphore`.
Пример:
```
import threading
semaphore = threading.Semaphore(3) # Максимум 3 потока одновременно
def worker():
with semaphore:
print(f"Поток {threading.current_thread().name} работает")
# Критическая секция
threads = [threading.Thread(target=worker) for _ in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()
```
**Нюансы:**
- `BoundedSemaphore` предотвращает случайное превышение лимита.
- В асинхронном коде (`asyncio`) используется `asyncio.Semaphore`.
- Семафоры полезны для ограничения подключений к БД или API.
Аналоги в других языках:
- Java: `java.util.concurrent.Semaphore`
- C++: `std::counting_semaphore` (C++20)
- Go: каналы с буферизацией (`chan struct{}`)