单线程公寓与多线程公寓[重复]
-
20-08-2019 - |
题
可能的重复:
您能解释一下 STA 和 MTA 吗?
所有ThreadPool线程都在多线程公寓中。
——根据 MSDN
这意味着什么?我真的很关心多线程公寓模型与单线程公寓模型之间的区别。或者说公寓型号是什么意思?我读过MSDN,但对我来说并没有什么意义。我想我可能有一个想法,但我想这里有人可以用简单的英语解释它。
谢谢,安东尼D
更新1
找到了这个您能解释一下 STA 和 MTA 吗?
谁能更详细地描述一下吗?
更新2
我也在寻找关于这如何应用于线程池的答案,以及因此我需要注意什么。
其他提示
在现实中,STA和MTA的对.NET代码产生影响。查看方式更详细克里斯Brumme的博客文章,那么你可能需要:
https://devblogs.microsoft.com/ cbrumme /公寓和 - 泵送 - 内式CLR /
这是真正重要的是了解的STA如何.NET抽取消息。它确实有后果。
如果您的COM对象需要相信它是在单线程环境中,使用STA。这样保证了创建和所有呼叫都将通过同一个线程进行。您可以安全地使用线程本地存储,你不需要使用的关键部分。
如果您的COM对象可以由多个线程同时访问,使用MTA - 不会有警卫到位
正如其他人指出的那样,通常对.NET应用程序的影响很小。
但要注意的是,用于单元测试的微软测试主机在STA,这意味着有上,你可以在单元测试做什么限制实际实施。例如,你不能做一个WaitAll
在一个单元测试WaitHandle
是你正在使用微软的测试主机。
您不必担心它,除非你正在做的COM-互操作,在这种情况下,有编组的问题。它有没有后果.NET本身。
不隶属于 StackOverflow