Pregunta

  

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

  

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

- Según MSDN

¿Qué significa eso? Estoy realmente preocupado por cuál es la diferencia entre el modelo de apartamento de rosca múltiple vs simple. ¿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 simple.

Gracias Anthony D

Actualización 1

Encontrado esto ¿Podría 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 lo que necesito tener en cuenta debido a esto.

¿Fue útil?

Solución

STA (apartamento de un solo subproceso) y MTA (apartamento de varios subprocesos) tienen que ver con COM . Los componentes COM se pueden diseñar para acceder a ellos mediante un solo subproceso, en cuyo caso están alojados en un STA , o se pueden hacer internamente seguros para subprocesos y alojados en un MTA . Un proceso puede tener solo un MTA, pero muchas STA. Si solo va a consumir componentes COM, todo lo que realmente necesita saber es que debe hacer coincidir el apartamento con el componente o sucederán cosas desagradables.

Otros consejos

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

https://devblogs.microsoft.com/ cbrumme / apartamentos-y-bombeo-en-el-clr /

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

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

Si muchos subprocesos pueden acceder a su objeto COM simultáneamente, use MTA; no habrá guardias colocados en su lugar.

Como otros han señalado, 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 se implementa realmente 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á utilizando el host de prueba de Microsoft.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top