Жизненный цикл потоков в .NET framework

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

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

enter image description here

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

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

  • Какова цель состояния Прервано? Когда поток вызывает метод Abort(), он перейдет в состояние AbortRequested и после того, как поток ответит на запрос прерывания, он перейдет в состояние Остановлено. Итак, какова функция состояния Прервано?

Ответы

Ответ 1

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

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

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

Ответ 2

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

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