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,350
Videos: 432
Enlaces: 1,830
Descripción:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Fuente

Затишна Галера | iOSКомпас 🧭1️⃣2️⃣2️⃣ Завдання 122Що таке бар’єри?Доброго здровля мої л...

Logotipo de la comunidad de telegram - Затишна Галера Затишна Галера @Zatishna_Galera
729 Vistas/Alcance 2025-10-01 12:05 Mensaje №2153
#iOSКомпас 🧭1️⃣2️⃣2️⃣ Завдання 122Що таке бар’єри?Доброго здровля мої любі друзі. З вами ваш незмінний ios розробник Сергій з @badlinkschannel.🤔 Barrier - це механізм синхронізації потоків, який дозволяє контролювати порядок виконання операцій у багатопотоковому середовищі.🔣 Memory BarriersВикористовуються у багатопоточному програмуванні для керування порядком операцій із пам’яттю.У багатопотоковому середовищі процесори й компілятори можуть змінювати порядок команд задля оптимізації, що може призвести до непередбачуваної поведінки. Бар’єри пам’яті запобігають цьому.#include <stdatomic.h>atomic_int sharedValue = 0;void updateValue() { atomic_store_explicit(&sharedValue, 10, memory_order_release);}void readValue() { int value = atomic_load_explicit(&sharedValue, memory_order_acquire);} 🔣 Бар’єри в GCD (dispatch_barrier)Використовуються у Grand Central Dispatch (GCD) для контролю порядку виконання завдань у паралельній черзі (DispatchQueue з атрибутом .concurrent). Дозволяють синхронізувати доступ до ресурсу, блокуючи чергу на час виконання завдання. Усі завдання до бар’єра виконуються паралельно. Бар’єр чекає завершення всіх попередніх завдань, виконується ексклюзивно, а потім дозволяє наступним завданням продовжити роботу.let queue = DispatchQueue(label: "com.example.concurrent", attributes: .concurrent)queue.async { print("Завдання 1")}queue.async { print("Завдання 2")}// БАР'ЄРНА ОПЕРАЦІЯqueue.async(flags: .barrier) { print("Бар'єр: усі попередні завдання завершені, виконуюсь один!")}queue.async { print("Завдання 3")} @Zatishna_Galera