Жизненный цикл потока в .NET Framework - PullRequest
16 голосов
/ 23 января 2012

Состояние потока в .NET Framework объясняется в этой ссылке .

Недавно я увидел эту картинку на веб-сайте, и мне пришла пара вопросов:

enter image description here

  1. Жизненный цикл потока в ОС не полностью соответствует жизненному циклу потока в .NET Framework.Может ли кто-нибудь предоставить ресурс, который соответствует состояниям в ОС, с .NET Framework?

  2. У нас нет состояния с именем Blocked в .NET Framework.Каким будет состояние потока, если он выдаст запрос ввода-вывода?

  3. Какова цель состояния Aborted ?Когда поток вызывает метод Abort(), он переходит в состояние AbortRequested и после того, как поток отвечает на запрос прерывания, он переходит в состояние Stopped .Так какова функция состояния Прервано ?

Ответы [ 2 ]

6 голосов
/ 23 января 2012

Поток блокируется, если его выполнение было приостановлено одним из примитивов синхронизации, таким как блокировка или мьютекс. Любой поток, выполняющий полезную работу в данный момент, по определению не блокируется в этот момент.

Цикл AbortRequested/Stopped дает потоку возможность выполнить упорядоченное завершение работы, высвободить полученные ресурсы и выполнить другие задачи очистки.

http://www.albahari.com/threading/

3 голосов
/ 25 января 2012

Ответы на ваши вопросы:

  1. Я не верю, что это отображение было бы столь же полезным, как вы надеетесь. Я никогда не сталкивался с этим и никогда не нуждался в этом.
  2. Нет реальной необходимости в состоянии «заблокировано», если вы не пытаетесь написать что-то вроде детектора тупика (довольно продвинутого). С точки зрения типичного разработчика состояние «заблокированного» ОС является временным и может быть проигнорировано. (Похоже, ваш код работает, но ОС не имеет ничего общего до получения асинхронного ответа.)
  3. Представьте прерванное состояние как .NET, обеспечивающее обработчик исключений для всего кода в потоке. Когда возникает исключение, в результате которого поток умирает, .NET переводит его в состояние Прервано для вас. В противном случае вы не сможете определить разницу между ненормальным и нормальным завершением потока.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...