8

调用 时CoInitializeEx,您可以为 指定以下值dwCoInit

typedef enum tagCOINIT {
    COINIT_MULTITHREADED     = 0x0,
    COINIT_APARTMENTTHREADED = 0x2,
    COINIT_DISABLE_OLE1DDE   = 0x4,
    COINIT_SPEED_OVER_MEMORY = 0x8,
} COINIT;

标题为“内存速度”的暗示性价值有什么作用?这些天在COM中被忽略了吗?

4

1 回答 1

14

不知道它是否仍在使用,但它旨在改变 COM 算法使用的平衡。

如果你有大量的内存并且不惜一切代价想要速度,你会设置那个标志。

在低内存环境中,关闭该标志将有利于减少内存使用。


事实证明,了不起的Raymond Chen(以“The Old New Thing”成名)现在已经对这个主题进行了权衡,尽管这面旗帜的本意是什么,但它显然什么也没做。

请参阅CoInitializeEx 的 COINIT_SPEED_OVER_MEMORY 标志有什么作用?更多细节:

何时应启用此模式?没关系,因为据我所知,COM 中没有任何代码可以根据进程是否已置于此模式来更改其行为!看起来标志是在引入 DCOM 时添加的,但它从未与任何东西挂钩。(或者任何连接到它的代码从未发布过。)

还有 来自原始 COM+ 架构师之一 Steve Swartz 的http://archives.neohapsis.com/archives/microsoft/various/dcom/2001-q1/0160.html :

COM 忽略 COINIT_SPEED_OVER_MEMORY。

于 2008-09-17T05:07:43.690 回答