c# .net multithreading apartments

c# - Single-Threaded Apartments vs apartamentos de mĂșltiples hilos



.net multithreading (5)

Como han señalado otros, generalmente tiene poco impacto en las aplicaciones .NET.

Sin embargo, tenga en cuenta que el host de prueba de Microsoft utilizado para las pruebas unitarias en realidad se implementa en una STA, lo que significa que hay limitaciones en lo que puede hacer en la prueba unitaria. Por ejemplo, no puede hacer un WaitAll en un WaitHandle en una prueba unitaria si está usando el host de prueba de Microsoft.

Posible duplicado:
¿Podría explicar STA y MTA?

Todos los hilos ThreadPool están en el apartamento multiproceso.

- Según el MSDN

Qué significa eso? Estoy realmente preocupado con cuál es la diferencia entre el modelo de apartamento multi vs single threaded. ¿O qué significa el modelo de apartamento? He leído el MSDN en él, y realmente no tiene sentido para mí. Creo que puedo tener una idea, pero estaba pensando que alguien aquí podría explicarlo en inglés.

Gracias, Anthony D

Actualización 1

Encontrado esto ¿Podrías explicar STA y MTA?

¿Alguien puede ser más descriptivo?

Actualización 2

También estoy buscando una respuesta sobre cómo esto se aplica al grupo de subprocesos, y qué debo tener en cuenta debido a esto.


No tiene que preocuparse por eso a menos que esté haciendo interoperabilidad COM, en cuyo caso hay problemas de coordinación. No tiene ramificaciones para .net en sí.


STA (apartamento de subproceso único) y MTA (apartamento de subprocesos múltiples) tienen que ver con COM . Los componentes COM pueden diseñarse para que se acceda mediante un único hilo, en cuyo caso se alojan en una STA , o pueden estar internos y protegidos internamente, y hospedados en un MTA . Un proceso puede tener solo un MTA, pero muchas STA. Si solo vas a consumir componentes COM, todo lo que realmente necesitas saber es que tienes que unir el apartamento con el componente o si pasarán cosas desagradables.


Si su objeto COM necesita creer que está en un entorno de subproceso único, use STA. Se le garantiza que la creación y todas las llamadas se realizarán con el mismo hilo. Puede usar de manera segura el almacenamiento local Thread y no necesita usar secciones críticas.

Si se puede acceder a su objeto COM por varios hilos al mismo tiempo, use MTA: no se instalarán guardias.


En realidad, las STA y MTA tienen un impacto en el código .NET. Vea la entrada del blog de Chris Brumme para obtener más detalles, entonces probablemente necesite:

http://blogs.msdn.com/cbrumme/archive/2004/02/02/66219.aspx

Es realmente importante entender cómo las STA bombean mensajes en .NET. Tiene consecuencias.