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 🌐 UK

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

@Zatishna_Galera
Número de suscriptores: 2 690
Fotos: 1,570
Videos: 475
Enlaces: 2,090
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