visual supportedruntime studio netframework net latest instalar framework change c# .net multithreading thread-state

c# - studio - supportedruntime version= v4.0 sku=.netframework version=v4.5/



Ciclo de vida del hilo en.NET Framework (2)

El estado de un hilo en el marco .NET se explica en este enlace .

Hace poco vi esta foto en un sitio web y me surgieron un par de preguntas:

  1. El ciclo de vida del subproceso en el sistema operativo no está completamente alineado con el ciclo de vida del subproceso en el marco .NET. ¿Puede alguien proporcionar un recurso que coincida con los estados en OS con .NET framework?

  2. No tenemos un estado llamado Bloqueado en .NET framework. ¿Cuál será el estado de un subproceso si emite una solicitud de E / S?

  3. ¿Cuál es el propósito del estado abortado ? Cuando un subproceso llama al método Abort() , irá al estado AbortRequested y, después de que el subproceso responda a la solicitud de abortar, pasará al estado Detenido . Entonces, ¿cuál es la función del estado abortado ?


Respuestas a tus preguntas:

  1. No creo que este mapeo sea tan útil como parece esperar. Nunca me he encontrado con uno y nunca lo he necesitado.
  2. No hay una necesidad real de un estado "Bloqueado" a menos que esté intentando escribir algo como un detector de interbloqueo (bastante avanzado). Desde una perspectiva típica del desarrollador, el estado "bloqueado" del sistema operativo es transitorio y se puede ignorar. (Parece que su código se está ejecutando, pero el sistema operativo no tiene nada que hacer hasta que se reciba la respuesta asíncrona).
  3. Imagine el estado Abortado como .NET que proporciona un controlador de excepciones alrededor de todo el código en el hilo. Cuando se detecta una excepción, lo que hace que el hilo muera, .NET lo convierte a un estado Abortado para usted. De lo contrario, es posible que no pueda distinguir la diferencia entre la terminación anormal y normal del hilo.

Un subproceso se bloquea si su ejecución ha sido suspendida por una de las primitivas de sincronización, como un bloqueo o un mutex. Cualquier hilo que esté realizando un trabajo útil en un momento dado, por definición, no está bloqueado en ese momento.

El ciclo AbortRequested/Stopped le da al hilo la oportunidad de realizar un cierre ordenado, liberando los recursos adquiridos y realizando otras tareas de limpieza.

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