застенчивым изменить
В этом руководстве вы узнаете, какая есть параллельная очередь задач, некоторые из лучших случаев использования и как писать один.
Очередь является одним из самых используемых структур данных. Вы, вероятно, используете его каждый день, когда вы делаете покупки для продуктов питания (даже онлайн) или когда вы отправляете текстовое сообщение своим друзьям.
Очередная очередь задачи является очень мощным рисунком, который действительно может помочь вам справиться с задачами со временем или улучшить свою производительность.
TL; DR внизу
Давайте начнем с основ
Что такое очередь? ???
Очередь представляет собой линейную структуру, в которой значения добавляются на одном конце и удаляют из другого. Эта дисциплина приводит к первому в/первым поведению (FIFO), которое является определяющей особенностью очередей. Два фундаментальных операции очереди представляют собой enqueue (Add to back) и dequeue (удалить спереди) ( Источник ).
Хорошо, когда мы должны использовать это?
Используйте очередь, когда вам нужно поддерживать порядок событий и обрабатывать значение по этому заказу.
Отлично, ты меня убедил! Но почему мне нужна параллельность?
Как я уже упоминал выше, очередь способен обрабатывать одно значение за раз. Но иногда это недостаточно быстро.
Рассмотрим следующий случай ?
Вы находитесь в вашем любимом продуктовом магазине и только что прибыли в кассир, но, к сожалению, есть много людей ждут. Чтобы ускорить процесс, магазин открыл еще несколько регистров, и каждый дополнительный кассир имеет свою очередь. Так что вам просто нужно выбрать один. Если один из кассиров имеет техническую проблему, или они просто медленно, эта очередь будет задерживаться, даже если другие слоты свободны.
Очередь параллельных задач к спасению! ?
Мы будем использовать только одну очередь для наших целей. Таким образом, каждый раз, когда слот становится свободным, мы сделаем человека из очереди и отправим его в свободный слот.
Ура! ?
Теперь давайте рассмотрим случаю использования
На прошлой неделе я работал над расширением Google Chrome, который нюхает и загружает HLS поток (HTTP Live Stream).
Потоки HLS сочетаются из нескольких кусочков, которые привлечены один за другим и передаются в ваш браузер как одно видео. Вы можете иметь тысячи файлов на ручье, и вам нужно загрузить их все.
Мы будем использовать наши любимые очередь Ускорить процесс и убедиться, что одна медленная извлечение не удержит других.
TL; DR: вот код
Теперь давайте посмотрим на это кусок по частям.
1. Обработчик
Этот простой обработчик получает URI из полезной нагрузки, а затем:
- извлекивает кусок
- превращает его в капли
- излучает Готовый кусок Redux Event.
- Получает текущее количество готовых кусков
- проверяет, если это “все сделано”
2. Создать очередь
Используя обработчик, мы создаем новую очередь с помощью 5 работников. Мы вернемся Наблюдатель Задача и Канал очереди. Тогда мы собираемся запустить (вилку) задачу наблюдения Так что начнет слушать задачи.
3. Нажмите задачи
Мы рассмотрим все сегменты в задачу поставленной (в канал очереди », чтобы мы вернулись), а затем мы стреляем все задачи вместе.
4. Подождите, пока все куски будут готовы или для Действие, которое будет отменено
Теперь мы ждем первое действие, которое будет называться все сделано или быть отменено. После этого мы можем отменить наблюдателя и действовать в соответствии с принятым действием.
Вот и все!
Если вы хотите увидеть это жить, посетите https://github.com/pueMos/hls-downloader-chroome-extension и загрузите расширение Chrome.
Я надеюсь, что вы узнали что-то новое! Если у вас есть какие-либо вопросы, пожалуйста, прокомментируйте ниже, чтобы все могли получить пользу.
Оригинал: “https://www.freecodecamp.org/news/how-to-use-a-concurrent-task-queue-in-your-redux-sagas-39e598c4fcae/”