Sobes.tech
Back to questions
Junior — Middle
69

Имел ли опыт использования механизма Semaphore в своих проектах?

Answer from AI

sobes.tech AI

Да, в проектах на Android использовал механизм Semaphore для управления доступом к ограниченным ресурсам в многопоточном окружении.

Semaphore позволяет ограничить количество потоков, которые могут одновременно выполнять определённый участок кода или использовать ресурс. Например, если у вас есть пул соединений к базе данных, и вы хотите ограничить число одновременных подключений, Semaphore поможет это контролировать.

Пример использования в Kotlin:

val semaphore = Semaphore(3)  // максимум 3 потока одновременно

fun accessResource() {
    semaphore.acquire()  // пытаемся получить разрешение
    try {
        // работа с ресурсом
    } finally {
        semaphore.release()  // освобождаем разрешение
    }
}

Это помогает избежать гонок данных и перегрузки ресурсов.