Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: mutex, semaphore, channel, actor, atomicfu

Какие механизмы синхронизации доступны в корутинах?

Проверяет знание средств безопасного доступа к общим ресурсам в корутинах.

Короткий ответ

В корутинах доступны Mutex для мьютексов, Channel и Actor для последовательной обработки сообщений, а также Semaphore из kotlinx.coroutines.sync. Кроме того, существует withContext(Dispatchers.IO) для переключения контекста и atomic примитивы из kotlinx.atomicfu.

Длинный ответ

1. Mutex

val mutex = Mutex()
mutex.withLock { /* критическая секция */ }

2. Semaphore

val sem = Semaphore(permits = 3)
sem.withPermit { /* … */ }

3. Channel и Actor

  • Канал для посылки сообщений между корутинами

  • actor {} для создания одно-поточного процессора

4. AtomicFu

val counter = atomic(0)
counter.incrementAndGet()

5. Вывод:

Выбор зависит от задачи: мьютекс для блокировок, канал для очередей, атомики для счётчиков

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#mutex

#semaphore

#channel

#actor

#atomicfu

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.