4 месяца назад
Асинхронное программирование: подробное руководство (с примерами)
Введение В постоянно меняющейся сфере разработки программного обеспечения эффективность и производительность имеют первостепенное значение. Python, известный своей простотой и читабельностью, стал очень востребованным языком. Однако по мере того, как разработчики расширяют границы возможностей Python, становится очевидной необходимость в более сложных методах программирования. Именно здесь асинхронное программирование — парадигма, позволяющая одновременно решать несколько задач, — меняет правила игры...
4 года назад
Примитивы синхронизации в Go
Источник: Nuances of Programming Изучаем Mutex, WaitGroup и Once с примерами В данной статье кратко рассмотрим некоторые конструкции низкоуровневой синхронизации, которые наряду с горутинами и каналами предлагает нам один из самых популярных стандартных библиотечных пакетов Go, а именно пакет sync. Таких конструкций очень много, а мы изучим лишь три из них, зато с примерами: WaitGroup, Mutex и Once.  Примеры кода можно найти на GitHub. Поехали! WaitGroup WaitGroup используется для координации в случае, когда программе приходится ждать окончания работы нескольких горутин...
7 месяцев назад
GIL -Мьютекс - Семафор - Python Мьютексы - (mutex - mutually exclusive "взаимное исключение") - также защёлка - примитив синхронизации, механизм изоляции для синхронизации доступа нескольких потоков к совместно используемым ресурсам. Используются некоторыми операционными системами для регулирования доступа нескольких процессов к совместно используемым данным. Семафор (semaphore) - примитив синхронизации работы процессов и потоков, в основе которого лежит счётчик над которым можно производить две операции wait и signal и операция инициализации init. Каждый процесс должен исключать для всех других процессов возможность одновременно с ним обращаться к этим данными (взаимоисключение). Мьютекс - это переменная, связанная с совместно используемым ресурсом, например, с буфером. Чтобы получить доступ к ресурсу, поток должен сначала получить мьютекс для этого ресурса. Доступ других потоков к ресурсу невозможен, пока владелец мьютекса его не освободит. Когда мьютекс станет доступен, поток получит мьютекс, переведя его в состояние "используется". Синхронизация при помощи мьютексных семафоров позволяет в каждый момент выполнять запись в область памяти совместного использования только одному потоку. GIL (Global interpreter Lock, глобальная блокировка интерпретатора) - это мьютекс или механизм, обеспечивающий при использовании интерпретатора СPython, безопасную работу с потоками. - то есть он позволяет задействовать только один поток операционной системы в конкретный момент времени для выполнения байт-кода Python. В результате нельзя ускорить Python - код, интенсивно использующий ресурсы процессора, распределив вычислительную нагрузку по нескольким потокам. Эта защита нужна для того, чтобы мы не могли одновременно менять ссылки на объекты в Python, которые приведут к ошибке. Более подробно: habr.com/...360