|
|
发表于 2007-7-17 09:06:00
|
显示全部楼层
Re:请问CoInitialize()到底做了些什么
我以前也问过这样的问题,结果也没人回答。
道相似,果相近啊。
我查找资料(《COM精髓》)、看MSDN,认为如下:
调用 CoInitialize() 等同于 CoInitializeEx(NULL,COINIT_APARTMENTTHREADED),即COM作为单线程COM使用。
COM还可以作为多线程COM使用,用 CoInitializeEx(NULL,COINIT_MULTITHREADED)。
这好像涉及到 COM 和客户(即使用COM的程序)之间的数据传递问题,到底使不使用代理、占位工作方式等问题。
单线程COM和客户处于同一线程单元中,数据直接交换。
多线程就要代理、占位(proxy、stub)……
……
我也不是很明白。
不过如果人性化点考虑,微软为了我们创建 COM 的方式不随线程而改变,这样做也很合理。
……
呵呵,不要灰心,还是有人回帖的!!*o* |
|