Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Затишна Галера
Añadido 06 ene. 2025

Затишна Галера

@Zatishna_Galera
Número de suscriptores: 2 709
Fotos: 1,340
Videos: 429
Enlaces: 1,810
Descripción:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Fuente

Затишна Галера | iOSКомпас 🧭1️⃣4️⃣8️⃣ Завдання 148Що таке м’ютекс (mutex)?Починаємо моб...

Logotipo de la comunidad de telegram - Затишна Галера Затишна Галера @Zatishna_Galera
487 Vistas/Alcance 2026-04-01 10:35 Mensaje №2550
#iOSКомпас 🧭1️⃣4️⃣8️⃣ Завдання 148Що таке м’ютекс (mutex)?Починаємо мобільну середу! З вами знову той самий автор каналу @badlinkschannel. Сподіваюсь вам ще не набридла ця ідея капітана галери про iOS розробника.🤔 М’ютекс (від англ. «mutex» - mutual exclusion, взаємне виключення) - це механізм синхронізації, який використовується у багатопотоковому програмуванні для запобігання одночасному доступу кількох потоків до спільних ресурсів, таких як змінні, структури даних або файли. Він допомагає уникнути стану гонки (race condition), коли результат виконання програми залежить від невизначеного порядку доступу потоків до ресурсу.🔣 Основні концепції м’ютекса🔣 Взаємне виключенняМ’ютекс забезпечує доступ до спільного ресурсу лише одному потоку в кожен момент часу. Коли один потік захоплює м’ютекс, інші потоки повинні чекати, поки м’ютекс не буде звільнений.🔣 Захоплення і звільненняПотік захоплює м’ютекс перед доступом до спільного ресурсу і звільняє його після завершення роботи з цим ресурсом. Якщо м’ютекс уже захоплений іншим потоком, поточний потік буде заблокований доти, поки м’ютекс не буде звільнений.🤓 Приклад використання м’ютекса в Swiftimport Foundationclass SafeCounter { private var value = 0 private let lock = NSLock() func increment() { lock.lock() value += 1 lock.unlock() } func getValue() -> Int { lock.lock() let currentValue = value lock.unlock() return currentValue }}let counter = SafeCounter()let group = DispatchGroup()for _ in 0..<2 { DispatchQueue.global().async(group: group) { for _ in 0..<1000 { counter.increment() } }}group.wait()print("Final counter value: \(counter.getValue())") 🔣 Плюси і мінуси👍 Безпека данихМ’ютекси захищають спільні ресурси від одночасного доступу, запобігаючи пошкодженню даних.👍 ПередбачуваністьКод стає більш передбачуваним і стабільним, оскільки виключаються стани гонки.😡 Мертві блокування (Deadlocks)Якщо м’ютекси захоплюються у неправильному порядку, це може призвести до ситуації, коли два або більше потоків блокують один одного, очікуючи звільнення м’ютексів.😡 ПродуктивністьНадмірне використання м’ютексів може призвести до зниження продуктивності через збільшення часу очікування потоків.@Zatishna_Galera