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+ アーキテクトの 1 人である Steve Swartz によるhttp://archives.neohapsis.com/archives/microsoft/various/dcom/2001-q1/0160.htmlも 参照してください。

COINIT_SPEED_OVER_MEMORY は COM によって無視されます。

于 2008-09-17T05:07:43.690 に答える