CoInitialize和CoInitializeEx
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是允许的,但没有任何意义。
CoInitialize和CoInitializeEx相关推荐
- CoInitializeEx 与CoInitialize的区别
CoInitialize.CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象,原因是程序调用com库函数(除CoGetMalloc和内存分配 ...
- AfxOleInit()和::CoInitialize(NULL)区别
OLE是建立在COM之上的技术,层次比COM要高.AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM ...
- 多线程调用系统COM组件的体会(CoInitialize)
多线程调用COM组件的体会(CoInitialize) 调用任何COM组件之前,你必须首先初始化COM套件环境,即调用CoInitialize或CoInitializeEx.COM套件环境在线程的生存 ...
- OLE DB error occured. Code 80040E14h. CoInitialize has not been Called. 问题解决
Delphi XE10.4 使用unidac连接sqlserver2008编程,上传服务器,出了标题错误. 一.原因分析 1.屏幕显示CoUnInitialize has not been call. ...
- CoInitialize是什么
在msdn中对于CoInitialize的解释如下: Initializes the COM library on the current apartment and identifies the c ...
- CoInitialize()与COM
Coinitialize 参数为保留参数,必须为NULL CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象.应用程序调用com库函数(除 ...
- CoInitialize浅析一
大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境.但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索出答案, ...
- Coinitialize
Coinitialize 参数为保留参数,必须为NULL CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象.应用程序调用com库函数(除 ...
- CoInitialize浅析
之一: 大家都知道程序中若要使用COM组件则必须要先调用CoInitialize,该函数主要是用来初始化COM运行环境.但这个函数的作用域是以线程为单位还是以进程为单位呢?也许大家已经通过测试程序摸索 ...
最新文章
- 魔兽世界服务器位面 稳定,因抗议《魔兽世界》位面技术在RP服务器中被取消
- 点滴积累【JS】---JS小功能(setInterval实现图片效果显示时间)
- paddle深度学习框架中的FFT
- java基础(七) java四种访问权限
- Winform中设置ZedGraph鼠标悬浮显示距离最近曲线上的点的坐标值和X轴与Y轴的标题
- Json and Go
- 【算法】一个简单的k均值(k-means)原理
- boost::histogram::algorithm::reduce用法的测试程序
- Eclipse Java注释模板设置详解
- java http 1.1_java11新特性HttpClient
- java addcallback函数_java中怎么使用callback函数?
- IOS UIView 对象详解
- 【转】NHibernate集合映射中的set, list, map, bag, array
- 人生五大投资,你投对了几个?
- 一套完整的 Java 线上故障排查技巧,建议收藏!
- labelimg的使用
- 防火墙基础之路由器与防火墙单臂路由和DHCP接口地址池的配置
- 2020第六届上海市大学生网络安全大赛线上赛Misc-可乐加冰
- 大数据HBase(十五):HBase的Bulk Load批量加载操作
- CSS_css sprite原理优缺点及使用
热门文章
- webService 客户端接口调用【java】
- IOS:批量导入图片和视频到模拟器的相册
- JQuery的Ajax技术
- EtherCAT(扒自百度百科)
- Chapter6 Commodity Forwards
- 转:华为副总裁一封信:透露年薪千万的工作感悟,太震撼了!
- python面对对象编程-------5:获取属性的四种办法:@property, __setattr__(__getattr__) ,descriptor...
- PHP动态多文件上传的具体代码
- Python 学习笔记(2) - 基本概念、运算符与表达式
- 安装包安装服务,点修复出现的错误”Error 1001:指定的服务已存在“ 解决办法...