我已经阅读了很多有关Microsoft的线程公寓模型的信息,但是在可视化它方面仍然有一些麻烦。

微软以居住在公寓中的生物为类比。因此,对于STA,请考虑以下因素(我知道这有点愚蠢)。

  • 假定线程=人员,COMObject =细菌。这个人住在公寓里,而细菌则住在这个人里面。因此,在STA-Land中,线程驻留在STA中,而COMObject驻留在线程中,因此,为了与COMObject进行交互,必须通过在COMObject的线程上运行代码来实现。
  • 假定线程=人员,COMObject =猫。这个人住在公寓里,猫和那个人住在公寓里。在STA-Land中,线程和COMObject在同一层次级别。

  • Q1。上面哪一个类比是正确的,或者如果都不是正确的,您将如何描述STA?

    Q2。您如何描述MTA?

    最佳答案

    我不喜欢这些比喻。他们感到困惑。

    您创建一个公寓。

    如果是STA,则单元中只有一个线程,因此该单元中的所有对象都将在该单个线程上执行(因此该单元中的对象中没有并发执行)

    如果是MTA,则该单元中可以有多个线程。因此,如果需要,MTA中的对象需要显式实现同步。

    一个物体住在一间公寓里。同一套公寓中可以有多个对象。

    A very good read here

    关于multithreading - 微软的Aparment类比(STA,MTA): Need help understanding it,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9014769/

    10-09 00:45