我已经阅读了很多有关 Microsoft 的线程单元模型的信息,但我仍然无法将其可视化。
Microsoft 使用住在公寓中的生物类比。因此,对于 STA,请考虑以下内容(我知道这有点傻)。
假设线程 = 人,COMObject = 细菌。人住在公寓里,细菌就住在人体内。所以在 STA-Land 中,一个线程存在于 STA 中,而 COMObject 存在于线程内部,因此为了与 COMObject 交互,必须通过在 COMObject 的线程上运行代码来实现。
假设 thread = person 和 COMObject = cat。人住在公寓里,猫和人住在公寓里。 SO 在 STA-Land 中,线程和 COMObject 在同一层级。
Q1。上面哪个类比是正确的,或者如果都不正确,您会如何描述 STA?
Q2。您如何描述 MTA?
最佳答案
我不喜欢这些类比。它们令人困惑。
您创建了一个公寓。
如果它是一个 STA,则公寓中只有一个线程,因此该公寓中的所有对象都将在该单个线程上执行(因此该公寓中的对象没有并发执行)
如果它是 MTA,则该单元中可以有多个线程。因此,如果需要,MTA 中的对象需要显式实现同步。
一个物体住在一个公寓里。同一个公寓中可以有多个对象。
关于multithreading - 微软的公寓类比 (STA, MTA) : Need help understanding it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014769/