似乎这些术语可以互换:
COM 同步调用 |
COM 不同步调用 |
STA(首选名称) |
MTA(首选名称) |
《公寓线》 |
免费线程 |
(经常)UI线程 |
(经常)工作线程 |
OLE 线程模型的描述和工作方式指示STA == apartment thread
和MTA == free thread
(即使两个新术语都使用“公寓”一词):
单线程单元模型 (STA):进程中的一个或多个线程使用 COM,并且对 COM 对象的调用由 COM 同步。接口在线程之间编组。单线程单元模型的退化情况,即给定进程中只有一个线程使用 COM,称为单线程模型。以前有时将 STA 模型简称为“公寓模型”。
多线程单元模型 (MTA):一个或多个线程使用 COM,并且对与 MTA 关联的 COM 对象的调用由与 MTA 关联的所有线程直接进行,而无需在调用者和对象之间插入任何系统代码。因为多个同时的客户端可能或多或少地同时调用对象(同时在多处理器系统上),所以对象必须自己同步它们的内部状态。接口不在线程之间封送。以前有时将这种模型称为“自由线程模型”。
如上所述apartment thread == UI thread
,free thread == worker thread
根据罗杰森的说法:
COM 使用相同的两种类型的线程,尽管 COM 对它们有不同的名称。COM 没有调用用户界面线程,而是使用术语单元线程。使用术语自由线程而不是工作线程。[...]
不过,我很想知道为什么术语会发生变化。