Потокобезопасность. Введение в Actors 😎
Одна из проблем работы с многопоточностью - это потокобезопасность. Как только мы начинаем работать с несколькими потоками, то у нас сразу же может возникать ситуация, когда два потока обратились к одной переменной, несколько потоков пытаются прочитать данные, а какой-то поток записывает.
Потокобезопасность — это свойство программы, которое гарантирует корректное и предсказуемое поведение при одновременном доступе из нескольких потоков. Это означает, что данные остаются в актуальном состоянии и не повреждаются, даже когда несколько потоков пытаются их прочитать или изменить одновременно.
Подробнее по ссылке😈
Одна из проблем работы с многопоточностью - это потокобезопасность. Как только мы начинаем работать с несколькими потоками, то у нас сразу же может возникать ситуация, когда два потока обратились к одной переменной, несколько потоков пытаются прочитать данные, а какой-то поток записывает.
Потокобезопасность — это свойство программы, которое гарантирует корректное и предсказуемое поведение при одновременном доступе из нескольких потоков. Это означает, что данные остаются в актуальном состоянии и не повреждаются, даже когда несколько потоков пытаются их прочитать или изменить одновременно.
Подробнее по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет 🤤
Теперь у вас есть возможность поддержать нас через донаты. На текущий момент все материалы и статьи остаются бесплатными, и мы продолжаем развивать нашу базу знаний, делая её доступной для всех. Ваша поддержка поможет нам сохранять этот формат и создавать ещё больше полезного контента.
Задонатить можно тут. Спасибо, что вы с нами❤️
Теперь у вас есть возможность поддержать нас через донаты. На текущий момент все материалы и статьи остаются бесплатными, и мы продолжаем развивать нашу базу знаний, делая её доступной для всех. Ваша поддержка поможет нам сохранять этот формат и создавать ещё больше полезного контента.
Задонатить можно тут. Спасибо, что вы с нами
Please open Telegram to view this post
VIEW IN TELEGRAM
Actor Reentrancy 🫨
На первый взгляд кажется, что работа с Actor очень простая. Но на самом деле есть достаточно неприятные проблемы о которых необходимо знать. Одна из них - высокоуровневые гонки.
• Теория и объяснение
• Как с этим бороться?
Обо всем подробнее по ссылке👀
iOS Deep Tech | Поддержать нас
На первый взгляд кажется, что работа с Actor очень простая. Но на самом деле есть достаточно неприятные проблемы о которых необходимо знать. Одна из них - высокоуровневые гонки.
• Теория и объяснение
• Как с этим бороться?
Обо всем подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Подробнее про ARC 😳
Automatic Reference Counting (ARC) — это механизм управления памятью, встроенный в Swift и Objective-C, который автоматически управляет жизненным циклом объектов. Его задача — освободить разработчиков от необходимости вручную выделять и освобождать память, как это делается в MRC.
ARC автоматически отслеживает количество активных ссылок на объект, и когда объект больше не используется, он освобождается из памяти. В основе этого механизма лежат три типа ссылок: strong, weak и unowned, каждая из которых играет свою роль в управлении памятью.
Подробнее по ссылке😵💫
iOS Deep Tech | Поддержать нас
Automatic Reference Counting (ARC) — это механизм управления памятью, встроенный в Swift и Objective-C, который автоматически управляет жизненным циклом объектов. Его задача — освободить разработчиков от необходимости вручную выделять и освобождать память, как это делается в MRC.
ARC автоматически отслеживает количество активных ссылок на объект, и когда объект больше не используется, он освобождается из памяти. В основе этого механизма лежат три типа ссылок: strong, weak и unowned, каждая из которых играет свою роль в управлении памятью.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Actor Hopping 🐱
Actor hopping — это концепция в модели экторов в Swift, которая описывает процесс переключения между разными акторами в асинхронном коде. Когда вы вызываете метод на одном акторе из контекста другого актора, происходит "прыжок" от одного актора к другому. Это требует изменения контекста выполнения, чтобы обеспечить потокобезопасный доступ к состоянию каждого актора.
Подробнее по ссылке👀
iOS Deep Tech | Поддержать нас
Actor hopping — это концепция в модели экторов в Swift, которая описывает процесс переключения между разными акторами в асинхронном коде. Когда вы вызываете метод на одном акторе из контекста другого актора, происходит "прыжок" от одного актора к другому. Это требует изменения контекста выполнения, чтобы обеспечить потокобезопасный доступ к состоянию каждого актора.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет 👋
Ветка по Junior Structured Concurrency уже подходит к завершению, осталось лишь несколько тем для полного охвата. В связи с этим мы готовим большой практический раздел для закрепления материала и нуждаемся в вашей помощи.
Напишите задачи, которые вы хотели бы увидеть в курсе. Возможно, у вас возникает вопрос: “Я знаю, как это сделать на GCD, но не знаю, как на Concurrency”. Мы будем рады рассмотреть такие запросы.
Вопросы можно оставить в комментариях или отправить в личные сообщения (контакты доступны на сайте)
Мы постараемся тщательно разобрать каждую задачу, чтобы данная ветка стала для вас максимально полезной🤙
Ветка по Junior Structured Concurrency уже подходит к завершению, осталось лишь несколько тем для полного охвата. В связи с этим мы готовим большой практический раздел для закрепления материала и нуждаемся в вашей помощи.
Напишите задачи, которые вы хотели бы увидеть в курсе. Возможно, у вас возникает вопрос: “Я знаю, как это сделать на GCD, но не знаю, как на Concurrency”. Мы будем рады рассмотреть такие запросы.
Вопросы можно оставить в комментариях или отправить в личные сообщения (контакты доступны на сайте)
Мы постараемся тщательно разобрать каждую задачу, чтобы данная ветка стала для вас максимально полезной
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, ребята из @ios_deepTech! ✌️
На связи международное сообщество мобильных разработчиков - Coffee&Code.
Оффлайн встречи мобильных разработчиков в формате дружеской беседы на этих выходных.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
🤖 Android:
📍СПИСОК ГОРОДОВ
📱 Mobile:
📍СПИСОК ГОРОДОВ
🍏 iOS:
📍СПИСОК ГОРОДОВ
На связи международное сообщество мобильных разработчиков - Coffee&Code.
Оффлайн встречи мобильных разработчиков в формате дружеской беседы на этих выходных.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
🤖 Android:
📍СПИСОК ГОРОДОВ
📱 Mobile:
📍СПИСОК ГОРОДОВ
🍏 iOS:
📍СПИСОК ГОРОДОВ
Please open Telegram to view this post
VIEW IN TELEGRAM
Поговорим о массивах 😎
Массивы являются одним из наиболее часто используемых типов данных в Swift. Они предоставляют упорядоченную коллекцию элементов одного типа и обладают богатым набором методов и функций для работы с ними.
В этой статье мы подробно рассмотрим массивы в Swift, их основные методы, алгоритмическую сложность операций.
Подробнее по ссылке🤟
iOS Deep Tech | Поддержать нас
Массивы являются одним из наиболее часто используемых типов данных в Swift. Они предоставляют упорядоченную коллекцию элементов одного типа и обладают богатым набором методов и функций для работы с ними.
В этой статье мы подробно рассмотрим массивы в Swift, их основные методы, алгоритмическую сложность операций.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Sendable 😄
Работая с
В такой работе стоит подумать о данных, потому что резко увеличивается вероятность возникновения гонки.
• Sendable
• Unchecked Sendable
Подробнее по ссылке🫣
iOS Deep Tech | Поддержать нас
Работая с
async/await мы постоянно переключаемся между состояниями, в этот момент функции приостанавливаются и продолжают своё исполнение. В такой работе стоит подумать о данных, потому что резко увеличивается вероятность возникновения гонки.
• Sendable
• Unchecked Sendable
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизации и устройство массивов 😳
Массивы в Swift разработаны с учетом высокой производительности и эффективности использования памяти.
Под капотом они используют ряд оптимизаций и особенностей реализации, которые позволяют им быть быстрыми и удобными в использовании.
Подробнее тут😎
iOS Deep Tech | Поддержать нас
Массивы в Swift разработаны с учетом высокой производительности и эффективности использования памяти.
Под капотом они используют ряд оптимизаций и особенностей реализации, которые позволяют им быть быстрыми и удобными в использовании.
Подробнее тут
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Set в Swift 👀
В Swift Set (множество) — это неупорядоченная коллекция уникальных значений одного типа. В отличие от массивов, где элементы могут повторяться и имеют определенный порядок, Set гарантирует, что каждый элемент присутствует только один раз, и не обеспечивает определенного порядка хранения.
Сеты используются, когда важно обеспечить уникальность элементов, быстро проверять наличие определенного значения и выполнять операции теории множеств, такие как объединение, пересечение и разность.
Подробнее по ссылке❤️🔥
iOS Deep Tech | Поддержать нас
В Swift Set (множество) — это неупорядоченная коллекция уникальных значений одного типа. В отличие от массивов, где элементы могут повторяться и имеют определенный порядок, Set гарантирует, что каждый элемент присутствует только один раз, и не обеспечивает определенного порядка хранения.
Сеты используются, когда важно обеспечить уникальность элементов, быстро проверять наличие определенного значения и выполнять операции теории множеств, такие как объединение, пересечение и разность.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Global Actor 😋
Global Actor в Swift — это механизм, который позволяет обеспечить безопасный и синхронизированный доступ к глобальным данным и функциям в многопоточной среде, используя модель акторов для контроля доступа. Если говорить тезисно:
• Это синглтон.
• Умеет шарить своего исполнителя между вызовами.
• Умеет шарить изоляцию между всеми вызовами.
• Глобальный Actor можно применять к классам, методам, функциям, замыканиям.
Подробнее по ссылке 😤
iOS Deep Tech | Поддержать нас
Global Actor в Swift — это механизм, который позволяет обеспечить безопасный и синхронизированный доступ к глобальным данным и функциям в многопоточной среде, используя модель акторов для контроля доступа. Если говорить тезисно:
• Это синглтон.
• Умеет шарить своего исполнителя между вызовами.
• Умеет шарить изоляцию между всеми вызовами.
• Глобальный Actor можно применять к классам, методам, функциям, замыканиям.
Подробнее по ссылке 😤
iOS Deep Tech | Поддержать нас
Actor isolation 🫨
Из прошлых статей можно сделать вывод, что Actor является потокобезопасным контейнером, который изолирует свой стейт и предоставляет доступ к нему только 1 задаче за одну единицу времени. Глобальный актор - делает тоже самое, только он шарит изоляцию между всеми всеми вызовами.
В этой статье мы поговорим о таких вещах, как:
• isolation
• nonisolated
Подробнее тут🧐
iOS Deep Tech | Поддержать нас
Из прошлых статей можно сделать вывод, что Actor является потокобезопасным контейнером, который изолирует свой стейт и предоставляет доступ к нему только 1 задаче за одну единицу времени. Глобальный актор - делает тоже самое, только он шарит изоляцию между всеми всеми вызовами.
В этой статье мы поговорим о таких вещах, как:
• isolation
• nonisolated
Подробнее тут
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Continuation ❤️🔥
Мы уже говорили с вами про continuation. Здесь мы рассмотрим его применение немного в другом контексте.
• Типы Continuation
• Отмена задач c continuation
Подробнее по ссылке👋
iOS Deep Tech | Поддержать нас
Мы уже говорили с вами про continuation. Здесь мы рассмотрим его применение немного в другом контексте.
• Типы Continuation
• Отмена задач c continuation
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
270 7 6 3
Task Group 👏
Мы уже очень хорошо поговорили про базовые возможности Structured Concurrency. Но остался один базовый вопрос, который хотелось бы разобрать. Как нам запустить одновременно на исполнение несколько задач?
• Async let
• Виды Task Group
• Динамическое добавление задач в группу
Подробнее тут🤠
iOS Deep Tech | Поддержать нас
Мы уже очень хорошо поговорили про базовые возможности Structured Concurrency. Но остался один базовый вопрос, который хотелось бы разобрать. Как нам запустить одновременно на исполнение несколько задач?
• Async let
• Виды Task Group
• Динамическое добавление задач в группу
Подробнее тут
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Поздравляем всех с Новым годом, а так же, делимся нашими маленькими итогами года 🎄
В новом году мы запланировали множество интересного контента и новых идей
Спасибо, что вы с нами!❤️
В новом году мы запланировали множество интересного контента и новых идей
Спасибо, что вы с нами!
Please open Telegram to view this post
VIEW IN TELEGRAM
AsyncSequence & AsyncStream 🤤
До этого момента мы с вами говорили только про задачи, которые исходят от пользователя, которые мы создаём сами, но что если нам нужно ловить последовательность каких-нибудь событий?
Подробнее по ссылке😘
P.S: Данный раздел завершающий в рамках грейда Junior, дальше вас ждет раздел с практикой
iOS Deep Tech | Поддержать нас
До этого момента мы с вами говорили только про задачи, которые исходят от пользователя, которые мы создаём сами, но что если нам нужно ловить последовательность каких-нибудь событий?
Подробнее по ссылке
P.S: Данный раздел завершающий в рамках грейда Junior, дальше вас ждет раздел с практикой
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Actor и Executor 🤓
Стоит сказать, что Actor, как и Task не выполняют никаких задач. Это просто обёртки для удобной работы в коде.
На самом деле за выполнение задач отвечают ActorExecutor и TaskExecutor.
Данных исполнителей мы можем подменять и писать свою реализацию.
Подробнее по ссылке😁
iOS Deep Tech | Поддержать нас
Стоит сказать, что Actor, как и Task не выполняют никаких задач. Это просто обёртки для удобной работы в коде.
На самом деле за выполнение задач отвечают ActorExecutor и TaskExecutor.
Данных исполнителей мы можем подменять и писать свою реализацию.
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Structured Concurrency. Практика 🤩
Пока без ответов, они будут позже, а пока, попробуйте сами
Если будут вопросы, не забывайте писать в комментарии
Подробнее по ссылке👍
iOS Deep Tech | Поддержать нас
Пока без ответов, они будут позже, а пока, попробуйте сами
Если будут вопросы, не забывайте писать в комментарии
Подробнее по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
Task Local 🤫
Продолжая изучать Task, можно задаться следующим вопросом: если дочерние задачи умеют наследовать контекст родительской задачи, то где хранится вся эта информация? И можно ли, помимо служебных полей, передать ещё какие-нибудь свои метаданные?
Ответы вы найдете по ссылке😑
iOS Deep Tech | Поддержать нас
Продолжая изучать Task, можно задаться следующим вопросом: если дочерние задачи умеют наследовать контекст родительской задачи, то где хранится вся эта информация? И можно ли, помимо служебных полей, передать ещё какие-нибудь свои метаданные?
Ответы вы найдете по ссылке
iOS Deep Tech | Поддержать нас
Please open Telegram to view this post
VIEW IN TELEGRAM
1 11 4 4