Articles of multihilo

¿Existe algún peligro no obvio en el uso de subprocesos en ASP.NET?

Esta es una pregunta de hermanos para esta pregunta de los progtwigdores . Brevemente, estamos tratando de impulsar “correctamente” algunos trabajos que se han ido acumulando sobre las solicitudes de los usuarios. La pregunta vinculada me ha dado muchas ideas sobre cómo deberíamos seguir la ruta de servicio, pero realmente no ha proporcionado ningún argumento […]

¿Por qué volatile y MemoryBarrier no impiden que las operaciones se reordenen?

Si entiendo el significado de volatile y MemoryBarrier correctamente, el progtwig a continuación nunca podrá mostrar ningún resultado. Detecta el reordenamiento de las operaciones de escritura cada vez que lo ejecuto. No importa si lo ejecuto en Debug o Release. Tampoco importa si lo ejecuto como una aplicación de 32 bits o de 64 bits. […]

¿Cuáles son las limitaciones de un hilo STA en comparación con los hilos MTA?

Si hacemos un hilo de STA como este: Thread.SetApartmentState(STA); entonces no puede ejecutar el código marcado con el atributo [MTAThread] . Hemos visto [STAThread] en aplicaciones de Windows y consola, pero nunca he visto código con el atributo [MTAThread] y no sé qué bibliotecas .NET usan este atributo. Mi pregunta es ¿cuáles son las limitaciones […]

¿Por qué la salida del hilo principal es lo primero en C #?

Escribí este pequeño progtwig: class Program { static void Main(string[] args) { Thread t = new Thread(WriteX); t.Start(); for (int i = 0; i < 1000; i++) { Console.Write("O"); } } private static void WriteX() { for (int i = 0; i < 1000; i++) { Console.Write("."); } } } Lo ejecuté unas cincuenta veces, […]

garantiza que el valor actualizado de la variable siempre esté visible para varios subprocesos en un sistema multiprocesador

Estoy usando tal configuración: .NET framework 4.5 Windows Server 2008 R2 HP DL360p Gen8 (2 * Xeon E5-2640, x64) Tengo tal campo en algún lugar de mi progtwig: protected int HedgeVolume; Accedo a este campo desde varios hilos. Supongo que, como tengo un sistema multiprocesador, es posible que estos subprocesos se ejecuten en diferentes procesadores. […]

¿Por qué necesito usar ConfigureAwait (falso) en todos los cierres transitivos?

Estoy aprendiendo async / await y después de leer este artículo No bloquear en el código asíncrono y esto es asíncrono / espera adecuado para métodos que están vinculados tanto a IO como a CPU Noté una sugerencia del artículo de @Stephen Cleary. Usar ConfigureAwait (falso) para evitar puntos muertos es una práctica peligrosa. Tendría […]

¿Existe alguna ventaja de usar palabras clave volátiles en contraste con el uso de la clase Interlocked?

En otras palabras, ¿puedo hacer algo con una variable volátil que no pueda resolverse también con una variable normal y la clase entrelazada?

Constructor estático y clase Singleton

Tengo un caché de objetos que implementa el patrón de diseño Singleton. Mi enfoque de singleton fue siempre cargar de forma lenta la instancia estática cuando se accede a la propiedad por primera vez. public static Widget { get { if(instance==null) instance = new Widget(); return instance; } } Sin embargo, sé que este enfoque […]

Cómo abortar hilos creados con ThreadPool.QueueUserWorkItem

¿hay una manera de abortar hilos creados con QueueUserWorkItem? O tal vez no necesito? ¿Qué pasa si sale la aplicación principal? ¿Todos los hilos creados desde él se abortan automáticamente?

Thread.Abort vs Thread.Interrupt

Si necesito cancelar alguna operación en un hilo, ¿cuándo debo usar Thread.Abort vs Thread.Interrupt ? Leí la documentación en él, pero no estoy seguro de qué escáner debería usar una llamada particular entre dos. Si hay alguna tercera forma de hacerlo, permítame saberlo también con los pros y los contras.