Жизненный цикл потоков в .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 переводит это в состояние "Прервано" для вас. В противном случае вы не сможете определить разницу между ненормальным и нормальным отключением потока.