2014-01-05 2 views
0

Я понимаю, что существуют два пула потоков, поддерживаемые CLR i.e. Рабочие потоки и потоки ввода-вывода. Однако, прочитав следующую статью, я немного смущен: http://nirajrules.wordpress.com/2009/09/28/net-worker-threads-io-threads-and-asynchronous-programming/.Does Worker Thread означает экземпляр класса Thread

Я говорил с более старшим разработчиком, который никогда не слышал о термине «Рабочая тема». Я понимаю, что рабочая тема является синонимом основной темы, например. когда пользователь запрашивает веб-страницу ASP.NET, создается рабочий поток. Поэтому, если 20 пользователей одновременно посетили сайт, тогда будет 20 активных рабочих потоков. ? Если 20 пользователей доступ многопоточного приложения на который создал три темы (http://msdn.microsoft.com/en-us/library/system.threading.thread%28v=vs.110%29.aspx), то было бы там быть шестьдесят активными потоков .. Однако после некоторых дальнейших исследований я обнаружил, что:

1) Worker Thread is synonymous to Background Worker (not main thread) 
2) The term Worker Thread means nothing to some people 

Поэтому мой вопрос: Является ли работник Тема ассоциирована с Thread (http://msdn.microsoft.com/en-us/library/system.threading.thread%28v=vs.110%29.aspx?) Или это основная тема?

+0

Возможно, дубликат http://stackoverflow.com/questions/1524249/what-is-a-worker-thread-and-its-difference-from-a-thread-which-i-create – SomeNickName

+1

Я не знаю, t думаю, что есть официальное определение для рабочего потока, но я всегда понимал его явно НЕ являющимся основным потоком пользовательского интерфейса. –

ответ

0

Насколько я понимаю, рабочий поток не является нитью пользовательского интерфейса. Он позволяет запускать код без блокировки пользовательского интерфейса (UI). Любой код, запускаемый в потоке пользовательского интерфейса, заставляет пользовательский интерфейс перестать отвечать до завершения кода. Для этого есть обходные пути (например, Me.Update()), но хорошая практика обычно заключается в том, чтобы запускать все, что займет более секунды, в потоке, отличном от UI.

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

1

Я знаю, что это просто непрофессиональный способ понять вещи, но я нашел это очень простым способом понять концепцию рабочих потоков.

Общего определения: -

А «рабочий поток» это просто поток, который работает, чтобы выполнить некоторую подготовительную работу по приказу своего босса (мы можем назвать его «клиентом») и результат обновления работы босса.

Техническое определение: -

Рабочий поток обычно определяется как поток, который активируется на запросы клиентов.

Пример 1:

1- У нас есть пицца магазин, где есть 10 парней, которые эксперт в области готовят вкусную пиццу. Они называются «рабочими потоками».

2- У нас есть парень, который получает заказы от клиентов. Этот парень называется «клиентом». Всякий раз, когда приходит новый заказ, один из «рабочих потоков» начинает готовить пиццу и обновлять клиенту после подготовки пиццы.

3- Когда есть менее 10 заказов, некоторые из рабочих просто сидят идеально.

4- Когда есть более 10 заказов, заказы просто помещаются в очередь ожидания.

Пример 2:

1- Существует сервер приложения, которое слушает порт 8080.

2- запрос приходит на порт 8080.

3- Нить слушателя (его называют «клиентом») принимает этот запрос и отправляет его в «рабочий поток», который завершает запрос. На самом деле существует пул «рабочих потоков» (многие объекты программы «рабочий поток») на сервере приложений.

4 Если два запроса поступают одновременно, назначаются два рабочих потока, и задача выполняется одновременно.

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