home.social

#очередь — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #очередь, aggregated by home.social.

  1. [Перевод] Структуры данных на практике. Глава 6: Стеки и очереди

    «Простота — требование, необходимое для обеспечения надёжности», — Эдсгер Дейкстра Невидимая структура данных В каждой программе используется стек — стек вызовов. Каждый вызов функции записывает в стек кадр, каждый возврат извлекает его. Он настолько фундаментален, что мы редко о нём задумываемся. Но когда нам нужен собственный стек или очередь, крайне важно правильно выбрать реализацию. Однажды я отлаживал вылет прошивки во встраиваемой системе RISC-V. У системы был планировщик задач, использующий очередь для управления ожидающими задачами. При большой нагрузке система вылетала с переполнением стека. Переполнение стека? Очередь должна была находиться в куче, а не в стеке. Проблема заключалась не в самой очереди, а в том, как она была реализована . Для очереди использовался связанный список, и каждый вызов malloc() выполнял распределение из пула памяти, делившего пространство со стеком. Под нагрузкой очередь разрасталась, пул фрагментировался и рано или поздно стеку не оставалось места для роста. Как же мы устранили проблему? Заменили очередь на основе связанного списка кольцевым буфером — очередью на основе массива фиксированного размера, получив при этом отсутствие динамического распределения, предсказуемое использование памяти и десятикратный рост скорости.

    habr.com/ru/articles/1000968/

    #стек #очередь #кэшпамять

  2. [Перевод] Структуры данных на практике. Глава 6: Стеки и очереди

    «Простота — требование, необходимое для обеспечения надёжности», — Эдсгер Дейкстра Невидимая структура данных В каждой программе используется стек — стек вызовов. Каждый вызов функции записывает в стек кадр, каждый возврат извлекает его. Он настолько фундаментален, что мы редко о нём задумываемся. Но когда нам нужен собственный стек или очередь, крайне важно правильно выбрать реализацию. Однажды я отлаживал вылет прошивки во встраиваемой системе RISC-V. У системы был планировщик задач, использующий очередь для управления ожидающими задачами. При большой нагрузке система вылетала с переполнением стека. Переполнение стека? Очередь должна была находиться в куче, а не в стеке. Проблема заключалась не в самой очереди, а в том, как она была реализована . Для очереди использовался связанный список, и каждый вызов malloc() выполнял распределение из пула памяти, делившего пространство со стеком. Под нагрузкой очередь разрасталась, пул фрагментировался и рано или поздно стеку не оставалось места для роста. Как же мы устранили проблему? Заменили очередь на основе связанного списка кольцевым буфером — очередью на основе массива фиксированного размера, получив при этом отсутствие динамического распределения, предсказуемое использование памяти и десятикратный рост скорости.

    habr.com/ru/articles/1000968/

    #стек #очередь #кэшпамять

  3. [Перевод] Структуры данных на практике. Глава 6: Стеки и очереди

    «Простота — требование, необходимое для обеспечения надёжности», — Эдсгер Дейкстра Невидимая структура данных В каждой программе используется стек — стек вызовов. Каждый вызов функции записывает в стек кадр, каждый возврат извлекает его. Он настолько фундаментален, что мы редко о нём задумываемся. Но когда нам нужен собственный стек или очередь, крайне важно правильно выбрать реализацию. Однажды я отлаживал вылет прошивки во встраиваемой системе RISC-V. У системы был планировщик задач, использующий очередь для управления ожидающими задачами. При большой нагрузке система вылетала с переполнением стека. Переполнение стека? Очередь должна была находиться в куче, а не в стеке. Проблема заключалась не в самой очереди, а в том, как она была реализована . Для очереди использовался связанный список, и каждый вызов malloc() выполнял распределение из пула памяти, делившего пространство со стеком. Под нагрузкой очередь разрасталась, пул фрагментировался и рано или поздно стеку не оставалось места для роста. Как же мы устранили проблему? Заменили очередь на основе связанного списка кольцевым буфером — очередью на основе массива фиксированного размера, получив при этом отсутствие динамического распределения, предсказуемое использование памяти и десятикратный рост скорости.

    habr.com/ru/articles/1000968/

    #стек #очередь #кэшпамять

  4. [Перевод] Структуры данных на практике. Глава 6: Стеки и очереди

    «Простота — требование, необходимое для обеспечения надёжности», — Эдсгер Дейкстра Невидимая структура данных В каждой программе используется стек — стек вызовов. Каждый вызов функции записывает в стек кадр, каждый возврат извлекает его. Он настолько фундаментален, что мы редко о нём задумываемся. Но когда нам нужен собственный стек или очередь, крайне важно правильно выбрать реализацию. Однажды я отлаживал вылет прошивки во встраиваемой системе RISC-V. У системы был планировщик задач, использующий очередь для управления ожидающими задачами. При большой нагрузке система вылетала с переполнением стека. Переполнение стека? Очередь должна была находиться в куче, а не в стеке. Проблема заключалась не в самой очереди, а в том, как она была реализована . Для очереди использовался связанный список, и каждый вызов malloc() выполнял распределение из пула памяти, делившего пространство со стеком. Под нагрузкой очередь разрасталась, пул фрагментировался и рано или поздно стеку не оставалось места для роста. Как же мы устранили проблему? Заменили очередь на основе связанного списка кольцевым буфером — очередью на основе массива фиксированного размера, получив при этом отсутствие динамического распределения, предсказуемое использование памяти и десятикратный рост скорости.

    habr.com/ru/articles/1000968/

    #стек #очередь #кэшпамять

  5. [Перевод] Первый взгляд на новые фоновые задачи в Django 6.0

    Команда Python for Devs подготовила перевод статьи о новых фоновых задачах в Django 6.0. Фреймворк наконец получил встроенный API для очередей задач — но без воркеров, так что чудес пока ждать рано. Автор показывает, зачем это обновление всё равно важно, как оно работает внутри и что можно построить поверх него уже сегодня.

    habr.com/ru/articles/972320/

    #Django #задачи #backend #worker #очередь #выполнение #retry

  6. [Перевод] Первый взгляд на новые фоновые задачи в Django 6.0

    Команда Python for Devs подготовила перевод статьи о новых фоновых задачах в Django 6.0. Фреймворк наконец получил встроенный API для очередей задач — но без воркеров, так что чудес пока ждать рано. Автор показывает, зачем это обновление всё равно важно, как оно работает внутри и что можно построить поверх него уже сегодня.

    habr.com/ru/articles/972320/

    #Django #задачи #backend #worker #очередь #выполнение #retry

  7. [Перевод] Первый взгляд на новые фоновые задачи в Django 6.0

    Команда Python for Devs подготовила перевод статьи о новых фоновых задачах в Django 6.0. Фреймворк наконец получил встроенный API для очередей задач — но без воркеров, так что чудес пока ждать рано. Автор показывает, зачем это обновление всё равно важно, как оно работает внутри и что можно построить поверх него уже сегодня.

    habr.com/ru/articles/972320/

    #Django #задачи #backend #worker #очередь #выполнение #retry

  8. [Перевод] Первый взгляд на новые фоновые задачи в Django 6.0

    Команда Python for Devs подготовила перевод статьи о новых фоновых задачах в Django 6.0. Фреймворк наконец получил встроенный API для очередей задач — но без воркеров, так что чудес пока ждать рано. Автор показывает, зачем это обновление всё равно важно, как оно работает внутри и что можно построить поверх него уже сегодня.

    habr.com/ru/articles/972320/

    #Django #задачи #backend #worker #очередь #выполнение #retry

  9. Почему multiprocessing.Queue() тормозит и как обойти это с помощью shared_memory

    Привет, Хабр! Вы запускаете многопроцессную задачу, кидаете данные в multiprocessing.Queue() , а потом вдруг замечаете... что всё тормозит. Муторно. Медленно. Местами прям отвратительно. Вы смотрите в монитор, на top, на htop, на код — и не понимаете: ну ведь должно же летать! А не летит.

    habr.com/ru/companies/otus/art

    #python #multiprocessing #очередь #производительность #shared_memory #межпроцессное_взаимодействие #кольцевой_буфер

  10. Событийный диспетчер отложенных задач на C#: консолидация и дедупликация данных в текущей инстанции

    Всем привет, меня зовут Артур Богданов. Я занимаюсь проектированием, разработкой и оптимизацией высоконагруженных веб-приложений на ASP.NET Core. Хочу поделиться с сообществом своей разработкой, которая позволяет использовать несколько фоновых задач (или «раннеров») для отложенной обработки консолидированных данных. Раннеры построены на шаблоне PubSub для асинхронного ожидания новых задач, что делает этот подход более реактивным, но менее ресурсоемким.

    habr.com/ru/articles/896088/

    #C# #net #aspnet_core #очередь #асинхронность #многопоточность #таск #таскменеджер #фоновые_задачи

  11. Куча таймеров в node.js

    А знаете ли вы, как на самом деле работают таймеры в node.js? В этой статье мы разберемся, как хранятся таймеры, когда запускаются и как в целом все работает вплоть до системных вызовов.

    habr.com/ru/articles/830644/

    #javascript #nodejs #libuv #куча #очередь #epoll #linux #таймеры

  12. Куча таймеров в node.js

    А знаете ли вы, как на самом деле работают таймеры в node.js? В этой статье мы разберемся, как хранятся таймеры, когда запускаются и как в целом все работает вплоть до системных вызовов.

    habr.com/ru/articles/830644/

    #javascript #nodejs #libuv #куча #очередь #epoll #linux #таймеры

  13. Тайное знание: синхронизация, многопоточность, очереди

    Может ли быть так, что в большинстве популярных языков отсутствует самый эффективный механизм синхронизации? Что инженеры Microsoft, Oracle и мн. др., не говоря уже об остальных, вплоть до 2024 года так и не догадались, как же эффективнее всего синхронизировать доступ к данным? А все что знает абсолютное большинство программистов, в том числе топовых IT компаний (за исключением редких разработчиков платформ Apple) о синхронизации - ошибочно? Сегодня попробуем разобраться. Эта статья подразумевает, что вы уже имеете базовое представление о механизмах синхронизации. Код написан на C#, но конкретный язык особого значения не имеет.

    habr.com/ru/articles/803273/

    #многопоточность #синхронизация #очередь #c# #gcd #apple #ios #java #зеленые_потоки

  14. Стеки и Очереди в Swift

    В этой статье мы исследуем две фундаментальные структуры данных, которые являются неотъемлемой частью программирования на Swift: стеки и очереди. Они представляют собой коллекции элементов с особыми правилами для добавления и удаления элементов. Стеки работают по принципу "последним пришел, первым ушел" (LIFO), что делает их идеальными для задач, связанных с обратной навигацией или отменой действий. Очереди, следуя принципу "первым пришел, первым ушел" (FIFO), идеально подходят для задач, требующих обработки элементов в порядке их поступления, например, в управлении задачами или потоками данных.

    habr.com/ru/articles/792220/

    #stack #queue #swift #очереди #стек #стеки #очередь #структуры_данных #алгоритмы