Рубрика «потоки»
Обратный разбрызгиватель: решение задачи Фейнмана
2026-07-29 в 8:00, admin, рубрики: аэромеханика, геометрия, гидродинамика, гидромеханика, жидкости, математика, потоки, спринклер, фейнман, физикаКак работает GIL и как от него избавиться
2025-08-20 в 10:15, admin, рубрики: GIL, python, многопоточность, потоки, процессыВ этой очередной статье по GIL разберемся, как работает Python, как был реализован GIL до версии языка 3.2, как глобальная блокировка работает сейчас, и что с ней делать.
Для чего нужен GIL?
Основная причина его существования — потокобезопасность. Например сборщик мусора работает на счетчике ссылок: каждая переменная или объект хранит число ссылок на него, и как только это число становится равным нулю, память освобождается. Если бы несколько потоков могли одновременно менять счётчик ссылок без синхронизации, это могло бы привести к повреждению данных или преждевременному удалению объектов.
ОС реального времени в эмуляторе Mario, или Как устроены потоки
2025-06-02 в 13:01, admin, рубрики: ruvds_перевод, взаимная блокировка, конкурентность, многопоточность, мьютексы, потоки
В своём предыдущем посте о потоках я привёл импровизированное сравнение1:
Потоки2 — это просто состояния сохранения3 эмулятора4, связанные с условием, при котором продолжается их выполнение.
В тот момент я подумал, что это неплохая аналогия, но не мог перестать размышлять о ней. Я какое-то время крутил её в голове. Мне кажется, что у этой аналогии есть серьёзный потенциал в качестве инструмента обучения.
Поэтому я добавил многопоточность в Super Mario Bros. для NES.
Читать полностью »
Горутины и каналы в Go: эффективная конкурентность
2024-12-24 в 12:15, admin, рубрики: горутина, горутины, каналы, конкурентное программирование, конкурентность, потокиGo язык программирования, который предлагает простой и мощный способ работы с конкурентностью, а именно через горутины и каналы. Эти инструменты делают параллельное выполнение задач удобным, безопасным и читаемым. Давайте разберем их ключевые особенности.
Горутины: сравнение с потоками в других языках
Горутины в Go действительно считаются легковесными в сравнении с системными потоками, которые используются в других языках, таких как Java, Python или C++. Основная причина в том, как они управляют стеком и ресурсами.
Сколько весит одна горутина?
-
Размер стека.Читать полностью »
Безопасная многопоточность в Rust
2021-09-21 в 14:25, admin, рубрики: deadlock, Rust, гонка данных, компилятор, многопоточность, потоки, Программирование, Проектирование и рефакторинг, трейтыРасследование: что выше, чем приоритеты потоков в Windows?
2020-04-23 в 7:12, admin, рубрики: Windows 10, WPA, Клиентская оптимизация, потоки, потоковая обработка данных, приоритеты, Программирование, разработка под windows, реверс-инжиниринг, торможениеЭто расследование, как и многие другие, началось с того, что я занимался собственными делами, не пытаясь искать себе проблем. На этот раз всё, что я сделал — открыл крышку ноутбука и попытался выполнить вход в систему.
В первые несколько раз, когда это приводило к задержке в двадцать секунд, я игнорировал проблему, надеясь, что она решится сама собой. В следующие несколько раз я задумался о расследовании, но проблемы производительности, возникающие ещё до того, как ты вошёл в систему, сложнее решать, а мне было лениво.
Когда я заметил, что избегаю закрывать ноутбук, потому что меня пугают эти слишком частые задержки, то понял, что пора заняться этим серьёзно.
К счастью, я недавно исправил трассировку кольцевого буфера UIforETW, сделав его надёжным, поэтому я запустил его и начал ждать следующего случая задержки. Долго ожидать мне не пришлось.
Мне потребовалось несколько раз, чтобы получить полностью устраивающую меня трассировку ETW. И поскольку эта территория была для меня незнакомой, на выяснение происходящего потребовалось какое-то время. Я по-прежнему не полностью разобрался в проблеме, но на 90% понял причины её возникновения. Мне удалось многое узнать, в том числе некоторые новые подробности о Windows-планировщике, а также я обнаружил абсолютно эффективное решение.
Идеальная трассировка, которую я в конце концов записал, при загрузке в Microsoft Windows Performance Analyzer (WPA) выглядит так:

Стандартные события, окна в фокусе и использование ЦП
Эта таблица и два графика содержат кучу информации. Верхняя таблица (Generic Events) показывает записанные UIforETW нажатия клавиш. Я пытался нажимать клавишу (код виртуальной клавиши 162) раз в секунду, пока не появится поле ввода пароля. Так как эти 17 нажатий клавиши выбраны, в графике ниже они показаны вертикальными синими линиями для упрощённой визуализации времени выполнения критически важных событий. По оси x отложено время в секундах.
Читать полностью »
О структуре параллельных вычислений или доводы против оператора «Go»
2019-12-10 в 14:59, admin, рубрики: async, Go, golang, python, Анализ и проектирование систем, асинхронное программирование, дейкстра, конкурентное программирование, параллельное программирование, параллельные вычисления, потоки, смена парадигмы
Каждый язык, поддерживающий параллельные (конкурентные, асинхронные) вычисления, нуждается в способе запуска кода параллельно. Вот примеры из разных API:
go myfunc(); // Golang
pthread_create(&thread_id, NULL, &myfunc); /* C with POSIX threads */
spawn(modulename, myfuncname, []) % Erlang
threading.Thread(target=myfunc).start() # Python with threads
asyncio.create_task(myfunc()) # Python with asyncio
Есть много вариантов нотации и терминологии, но одна семантика — запустить myfunc параллельно основной программе и продолжить родительский поток выполнения (англ. "Control Flow")
Потоки Redis как чистая структура данных
2019-03-23 в 18:02, admin, рубрики: csv, listpack, redis, Streams, потоки, Программирование, структура данныхНовая структура данных Redis 5 под названием «потоки» (streams) вызвала живой интерес в сообществе. Как-нибудь я поговорю с теми, кто использует потоки в продакшне, и напишу об этом. Но сейчас хочу рассмотреть немного другую тему. Мне начинает казаться, что многие представляют потоки неким сюрреалистичным инструментом для решения ужасно трудных задач. Действительно, эта структура данных *также* осуществляет обмен сообщениями, но будет невероятным упрощением считать, что функциональность Redis Streams ограничена только этим.
Потоки — потрясающий шаблон и «ментальная модель», которую можно с большим успехом применить в проектировании систем, но на самом деле потоки, как и большинство структур данных Redis, являются более общей структурой и могут использоваться для кучи других задач. В этой статье мы представим потоки как чистую структуру данных, полностью игнорируя блокирующие операции, группы получателей и всю остальную функциональность обмена сообщениями.
Читать полностью »
Исследуем пределы пропускной способности Kafka в инфраструктуре Dropbox
2019-02-14 в 8:01, admin, рубрики: Apache, apache kafka, DropBox, ITSumma, open source, Блог компании ITSumma, брокер сообщений, высокая производительность, инфраструктура, облачные сервисы, облачные технологии, потоки, потоковые данные, производительность, тестирование, Тестирование веб-сервисов
Широкое использование технологий Apache-стека — очевидный тренд. И Kafka на острие популярности: нынче людей, знающих такой брокер сообщений, пожалуй, превосходит количество тех, кто привык рядом со словом Кафка видеть слово Франц.
Мы и сами активно используем эту технологию в наших проектах. Но ведь всегда интересно, а как оно получается у других? И вдвойне интересно, если это не просто пример из чьей-то практики, а целенаправленное тестирование технологии. Поэтому мы перевели свежую статью, в которой рассказывается о том, как Dropbox опытным путём искал границы возможностей и лимиты выносливости у Kafka. И нашёл что хотел.
Асинхронный рассинхрон: антипаттерны в работе с async-await в .NET
2019-01-10 в 16:41, admin, рубрики: .net, ASP.NET, asp.net core, async/await, C#, threadpool, асинхронное программирование, потоки, ПрограммированиеКто из нас не косячит? Я регулярно встречаюсь с ошибками в асинхронном коде и делаю их сам. Чтобы прекратить это колесо Сансары делюсь с вами самыми типичными косяками из тех, которые иногда довольно сложно отловить и починить.



