1.CoInitialize和CoInitializeEx的功能

CoInitialize是在当前线程初始化Com组件的函数,并且初始化为STA模式(单线程模式),一般新的程序建议使用CoInitializeEx来替代。CoInitializeEx初始化当前线程Com组件并提供更多的设置选项,如并发模式等。

2.关于并发模型的说明(concurrency model)

并发模型类型

下面两种不能同时设置

COINIT_APARTMENTTHREADED

这个模式允许多线程调用,但是多线程所有的调用请求实际是被序列化,执行还是在创建这个线程对象的那个线程执行

COINIT_MULTITHREADED

这个模式允许在任何线程调用对象的方法(在这个线程创建的对象)。这不是序列化的,许多调用可以在不同的线程调用对象的方法。这种模式提供了一种高效的性能可以很好的利用多处理器跨线程、进程、机器调用,这是因为调用的这个方法没有被序列化,而是被同时调用的。所以这种使用时作者需要自己使用线程同步的方法。这种模式一般用来无界面的调用。

下面两种一般不用

COINIT_DISABLE_OLE1DDE禁用DDE对OLE1的支持COINIT_SPEED_OVER_MEMORY增加内存使用来使性能上升

3.CoInitialize多次调用和CoInitializeEx多次调用的问题

在同一个线程内多次调用CoInitializeEx是允许的,但没有任何意义。

出处:http://www.cnblogs.com/zhangdongsheng/
作者:张东升

CoInitialize和CoInitializeEx相关推荐

  1. CoInitializeEx 与CoInitialize的区别

    CoInitialize.CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象,原因是程序调用com库函数(除CoGetMalloc和内存分配 ...

  2. AfxOleInit()和::CoInitialize(NULL)区别

    OLE是建立在COM之上的技术,层次比COM要高.AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM ...

  3. 多线程调用系统COM组件的体会(CoInitialize)

    多线程调用COM组件的体会(CoInitialize) 调用任何COM组件之前,你必须首先初始化COM套件环境,即调用CoInitialize或CoInitializeEx.COM套件环境在线程的生存 ...

  4. OLE DB error occured. Code 80040E14h. CoInitialize has not been Called. 问题解决

    Delphi XE10.4 使用unidac连接sqlserver2008编程,上传服务器,出了标题错误. 一.原因分析 1.屏幕显示CoUnInitialize has not been call. ...

  5. CoInitialize是什么

    在msdn中对于CoInitialize的解释如下: Initializes the COM library on the current apartment and identifies the c ...

  6. CoInitialize()与COM

    Coinitialize 参数为保留参数,必须为NULL CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象.应用程序调用com库函数(除 ...

  7. CoInitialize浅析一

    大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境.但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索出答案, ...

  8. Coinitialize

    Coinitialize 参数为保留参数,必须为NULL CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象.应用程序调用com库函数(除 ...

  9. CoInitialize浅析

    之一: 大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境.但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索 ...

最新文章

  1. 魔兽世界服务器位面 稳定,因抗议《魔兽世界》位面技术在RP服务器中被取消
  2. 点滴积累【JS】---JS小功能(setInterval实现图片效果显示时间)
  3. paddle深度学习框架中的FFT
  4. java基础(七) java四种访问权限
  5. Winform中设置ZedGraph鼠标悬浮显示距离最近曲线上的点的坐标值和X轴与Y轴的标题
  6. Json and Go
  7. 【算法】一个简单的k均值(k-means)原理
  8. boost::histogram::algorithm::reduce用法的测试程序
  9. Eclipse Java注释模板设置详解
  10. java http 1.1_java11新特性HttpClient
  11. java addcallback函数_java中怎么使用callback函数?
  12. IOS UIView 对象详解
  13. 【转】NHibernate集合映射中的set, list, map, bag, array
  14. 人生五大投资,你投对了几个?
  15. 一套完整的 Java 线上故障排查技巧,建议收藏!
  16. labelimg的使用
  17. 防火墙基础之路由器与防火墙单臂路由和DHCP接口地址池的配置
  18. 2020第六届上海市大学生网络安全大赛线上赛Misc-可乐加冰
  19. 大数据HBase(十五):HBase的Bulk Load批量加载操作
  20. CSS_css sprite原理优缺点及使用

热门文章

  1. webService 客户端接口调用【java】
  2. IOS:批量导入图片和视频到模拟器的相册
  3. JQuery的Ajax技术
  4. EtherCAT(扒自百度百科)
  5. Chapter6 Commodity Forwards
  6. 转:华为副总裁一封信:透露年薪千万的工作感悟,太震撼了!
  7. python面对对象编程-------5:获取属性的四种办法:@property, __setattr__(__getattr__) ,descriptor...
  8. PHP动态多文件上传的具体代码
  9. Python 学习笔记(2) - 基本概念、运算符与表达式
  10. 安装包安装服务,点修复出现的错误”Error 1001:指定的服务已存在“ 解决办法...