Junior — Middle
87
Можешь объяснить, какие существует способы организации синхронизации процессов или потоков?
Companies where asked
bip.ru
Answer from AI
sobes.tech AI
Существует несколько способов организации синхронизации процессов или потоков:
- Мьютексы (Mutex) — обеспечивают взаимное исключение, чтобы только один поток мог выполнять критическую секцию кода.
- Семафоры (Semaphore) — позволяют ограничить количество потоков, одновременно работающих с ресурсом.
- Мониторы — высокоуровневый механизм, объединяющий мьютекс и условные переменные.
- Условные переменные (Condition Variables) — позволяют потокам ждать определённого условия и уведомлять друг друга.
- Барьер (Barrier) — синхронизирует группу потоков, заставляя их ждать друг друга.
Например, в Swift для синхронизации можно использовать DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 1)
DispatchQueue.global().async {
semaphore.wait() // захват ресурса
// критическая секция
semaphore.signal() // освобождение ресурса
}