Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое Semaphore и чем он отличается от SemaphoreSlim?
Semaphore — это обёртка над Win32 Semaphore, работает в межпроцессном и многопоточном окружении, его ожидание через WaitOne() занимает kernel transition. SemaphoreSlim — более лёгкий примитив для одного процесса, использует быстрый асинхронный механизм ожидания (без context switch) и поддерживает WaitAsync для async/await. SemaphoreSlim рекомендуют для синхронизации в управляемых приложениях.
Что такое DispatchGroup и DispatchSemaphore?
DispatchGroup позволяет группировать несколько асинхронных задач и получать уведомление, когда все они завершатся. DispatchSemaphore контролирует доступ к ресурсам, уменьшая либо увеличивая счётчик и блокируя поток при нулевом значении до сигнала.
Что такое semaphore и для чего он используется?
Semaphore — это механизм синхронизации, который ограничивает количество потоков, одновременно выполняющих участок кода. Он работает на основе счётчика, который уменьшается при входе и увеличивается при выходе. Если счётчик равен нулю, поток ждёт. Semaphore часто используется в GCD для контроля параллелизма. Он помогает избежать гонок данных.
Чем semaphore отличается от mutex?
Semaphore и mutex решают похожие задачи, но работают по-разному. Mutex предназначен для взаимного исключения и допускает только один поток в критическую секцию. Semaphore может разрешать доступ нескольким потокам одновременно. Mutex обычно привязан к потоку-владельцу, semaphore — нет. Semaphore более гибкий, но и более опасный в неправильном использовании.
Что произойдёт, если semaphore инициализировать со значением 1?
Semaphore со значением 1 будет вести себя как mutex. Только один поток сможет войти в критическую секцию одновременно. Остальные потоки будут ждать, пока счётчик снова не станет равным 1. Такой семафор часто называют бинарным. Однако семантически он всё равно остаётся семафором, а не mutex.
Чем NSLock отличается от semaphore?
В чем отличие dispatch barrier от semaphore?
В каких случаях стоит использовать DispatchSemaphore?
Рейтинг:
5
Сложность:
7
NSLock — это объектная обёртка над mutex, предназначенная для взаимного исключения. Semaphore — более универсальный примитив, работающий на основе счётчика. NSLock всегда пускает только один поток в критическую секцию, semaphore может пускать несколько. NSLock проще и безопаснее для защиты данных. Semaphore чаще используется для координации потоков и ограничения параллелизма.
Рейтинг:
4
Сложность:
8
Dispatch barrier используется для синхронизации задач в конкурентной очереди. Semaphore управляет количеством одновременно выполняемых задач. Barrier блокирует очередь до выполнения блока. Semaphore контролирует доступ к ресурсу через счетчик. Это разные инструменты для разных задач.
Рейтинг:
4
Сложность:
7
DispatchSemaphore используется для ограничения количества одновременно выполняемых задач или доступа к общему ресурсу. Он позволяет одному потоку ждать, пока другой освободит ресурс. В iOS его применяют редко и только в особых случаях. Чаще всего семафоры нужны для синхронизации фоновых операций.
Рейтинг:
2
Сложность:
6
Рейтинг:
1
Сложность:
5
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
7
Рейтинг:
4
Сложность:
5