我的学习园地

昨夜西风凋碧树,独上高楼,望尽天涯路。

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  14 随笔 :: 0 文章 :: 36 评论 :: 0 Trackbacks
  http://bbs.gameres.com/showthread.asp?threadid=83247
  COM是得到windows支持的一个特殊功能,提供方便、简单的对象编程模型。(我对此表示怀疑^0^)
  CoInitialize、CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象。
  有哪些方式呢?单线程和多线程。
  CoInitialize指明以单线程方式创建。
  CoInitializeEx可以指定COINIT_MULTITHREADED以多线程方式创建。
  创建单线程方式的COM服务器时不用考虑串行化问题,多线程COM服务器就要考虑。
  在使用中,使用CoInitialize创建可使对象直接与线程连接,得到最高的性能。创建多线程对象可以直接接收所有线程的调用,不必像单线程那样需要消息排队,但却需要COM创建线程间汇集代理,这样访问效率不高。

  http://blog.csdn.net/redpetallsg/archive/2007/06/01/1633989.aspx
  CoInitialize并不装载com库,这个函数只是用来初始化当前线程使用什么样的套间。当使用这个函数以后,线程就和一个套间建立了对应关系。
线程的套间模式决定了该线程如何调用com对象,是否需要列集等
你可以看一下有关列集的资料,使用不同套间之间对象接口是通过列集来完成的。关于列集的实现,很多书上都有较详细的说明。
  CoInitialize()并不会干扰客户和服务之间的通信,套所作的事情只是让线程注册一个套间,而线程运行过程中就必然在此套间中,就象我们每个活着的人,都一定属于某个国家一样。
  需要强调的是,套间是com中用来解决并发调用冲突的很有效的办法

  用CoUninitialize释放com套间。
posted on 2007-11-21 10:27 冷夜月 阅读(1606) 评论(0)  编辑 收藏 引用 所属分类: VC/MFC
只有注册用户登录后才能发表评论。