看了SDK,单线程apartment,多线程apartment,自由线程,这是怎么回事呀!请高手详解。apartment中文是解释成“住所”吗?

解决方案 »

  1.   

    一般都是翻译成“套间”
    套间是一个抽象的概念,可以把它理解为是线程的组合或是容器,跨过套间调用都要MARSHAL
    single-thread apartment指的是只能包含一个线程的套间
    multiple-thread apartment指的是可以包含多个线程的套间
    自由线程指的是该线程即可以存在于STA,也可以存在于MTA
      

  2.   

    如何进入sta或是mta?参看CoInitialize()和CoInitializeEx()两个函数的说明
      

  3.   

    apartment中好比你说的“住所”STA一次只能一个线程住在里面享受“住所”带来的便利和资源。如果其他线程向它借东西(比如接口)它就要通过某种协议向外提供实际上这是底层对接口数据流化。外面的线程拿到流要把流实例化。这就是所谓的列集和散集。而MTA就好比大家在一起同居,资源都是共享的。接口指针的传递不需要列集和散集