2010-12-01 4 views
1

У меня есть два потока:Как сделать перенос значений между несколькими потоками

Тема 1: выбор XML из веб-службы в цикле.

В статье 2 анализируется XML, извлеченный по потоку 1, и отображается в пользовательском интерфейсе.

Скажите, пожалуйста, какой лучший способ передать данные XML из потока 1 в поток 2, поскольку он извлекается потоком 1?

Тема 1 извлекает XML, а затем поток 2 потребляет его.

Для этого я создал круговой связанный список, и поток 1 помещает его XML в связанный список, а thread 2 получает XML для него и удаляет его из списка, и он работает нормально.

Пожалуйста, скажите мне, есть ли другой подход, отличный от того, что я использую.

ответ

2

Похоже, что вам нужно

Producer-Consumer Quequ

+0

thaks для быстрого и очень полезного ответа. – 2010-12-01 07:35:13

+0

FYI ... реализация шаблона производителя-потребителя в этой статье ** неверна. Microsoft действительно нуждается в очистке этой статьи. – 2010-12-01 19:05:18

2

Каркас обеспечивает

ConcurrentQueue

с .NET 4.0. Он должен реализовывать очередь между потребителем и производителем без необходимости какой-либо ручной синхронизации.

1

Если вы находитесь на .Net 4.0, вы можете использовать BlockingCollection, это очередь производителей-потребителей, которая позволяет потребителю ждать больше работы от производителя без необходимости управлять взаимодействием.

Смежные вопросы