Подтвердить что ты не робот

Лучший пример очереди/наилучшая практика

У меня есть данные, которые необходимо выполнить на определенном фоновом потоке. У меня есть код, исходящий из всех других потоков, которые нужно вызвать в этом. у кого-нибудь есть хороший учебник или лучшая практика о наличии очереди для синхронизации для поддержки этого требования к потоку.

4b9b3361

Ответ 1

Вы можете:

Ответ 3

Это интересная статья о ThreadPools:

http://www.codeproject.com/KB/threads/smartthreadpool.aspx

Для более простых случаев использования вы также можете использовать собственный класс ThreadPool.Net.

Ответ 4

Одно из моих любимых решений этой проблемы похоже на шаблон producer/consumer.

Я создаю основной поток (в значительной степени моя программа Main()), которая содержит объект блокирующей очереди.

Этот главный поток объединяет несколько рабочих потоков, которые простукивают от центральной блокирующей нити и обрабатывают их. Поскольку это потоковая блокировка очереди, биты синхронизации просты - вызов TaskQueue.Dequeue() будет блокироваться до тех пор, пока задание не будет выделено производителем/основным потоком.

Вы можете динамически управлять количеством желающих или исправлять их в соответствии с конфигурационной переменной - поскольку все они просто выкидывают вещи из очереди, количество рабочих не добавляет никакой сложности.

В моем случае у меня есть служба, которая обрабатывает несколько различных типов tasks. У меня есть очередь, набранная для обработки чего-то общего типа TaskQueueTask. Затем я подклассифицирую это и переопределяю метод Execute().


Я также пробовал подход .NET threadpool, в котором вы можете легко выбросить вещи в пул. Он был чрезвычайно прост в использовании, но также обеспечивал небольшой контроль и не гарантировал порядок выполнения, время и т.д. Он рекомендовал только для легких задач.

Ответ 5

Вы можете попробовать это решение. Он показывает, как реализовать шаблон производителя-потребителя. Имеет также некоторое объяснение того, что с ним можно сделать. Как и разные комбинации числа производителей и потребителей.

http://devpinoy.org/blogs/jakelite/archive/2009/01/12/threading-patterns-the-producer-consumer-pattern.aspx

http://devpinoy.org/blogs/jakelite/archive/2009/02/03/threading-patterns-producer-consumer-pattern-examples.aspx