• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请问com组件中怎么用多线程

请问com组件中怎么用多线程

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了com组件,com组件是什么,com组件下载,com组件注册,com组件编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请问com组件中怎么用多线程
描述:

我做了com组件(dll),但是其中包括一个循环次数很多的函数,消耗资源很大,可以在com组件内部用多线程呢?还是在外部用多线程?不用多线程,还有其他方法么?谢谢。


解决方案1:

关注~~~

解决方案2:

关于能否用多线程解决循环次数很多的问题IUnknown886(LiuJun)已经做了很好的解释。现在对COM里的多线程问题提些看法:
1. 首先肯定,COM组件里面可以用多线程。而且在实际应用中也是比较常用的。比如读写串口,需要读/写两个线程。
2. COM通过套间帮助程序做同步,但是在很多时候还是需要自己做好同步。因为同步是多线程编程普遍要处理的问题。
那怎么在线程里调com组件呢?我用CreateDispatch调com组件,然后用接口函数,在一个线程里调它,但是怎么都进不去,这是怎么回事?
---
1。 先确定你的组件是支持哪种套间,FREE,APARTMENT还是BOTH。默认是APARTMENT。可以修改.rgs文件来改变。
2。 如果是APARTMENT,在线程函数中一定要调用CoInitialize(NULL)或CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)或AfxOleInit().退出前调用CoUninitialize()。估计你的组件属于这种情况。
关于套间详细问题,可以看MSDN资料。

解决方案3:

第一,你想通过多线程提高速度,是不可能的,多线程只是让CPU把时间片分给几个线程执行,假设电脑中只有一个线程,要完成你的任务需要一个小时,现在你用两个线程来做,CPU会分给每个线程半个小时,总时间还是一样,一点也不会提高运行速度.你要想计算得快点,只有改算法,多线程要解决的是多任务的问题,而不是速度的问题;
第二,在COM内部写多线程代码可以通过,但一般不这么写,因为COM是用来给外部调用的,同步是它的一个大问题,现在如果在它的内部再做多线程,同步就更成问题了,而且出现的问题很难退踪,因为出现的问题什么时候再出现是随机的,与CPU当时怎么调用线程的顺序有关;在外部,多个线程可以并行对COM进行调用,这涉及同步问题,即要保证COM能顺利地完成它内部完事的逻辑.这是一个需要深入研究的问题,你可以看看有关"套间"的文章.
第三,如果你想让COM组件在计算的时候,不要让界面死在那里,你要做的是在客户端做多线程,其用一个作为工程线程,等着COM返回结果,另一个是界面线程,可以让用户继续做其它的事.COM计算完成后,工作线程得到返回值,然后通知界面线程.
总之一句话,你想用多线程在服务器端来解决你的问题,基本上是不可行的.改进算法是关键.
个人观点,仅供参考

解决方案4:

优化算法 , 如果还不行,就升级机器配置, 采用 并行多处理器, 增加内存.等等 . 如果还不行的话, 将你的程序移植到 巨型机上去运行.  或者分布式运算: 使用N台计算机组成的计算机组 来进行分布运算.

解决方案5:

多线程用来处理这样的问题也许是在耗费CPU,应该从本质出发
根据应用的特点想办法减少计算量,而不是绕过这个问题

解决方案6:

多线程能解决“循环次数很多的函数,消耗资源很大”的问题吗?


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • COM组件的变量问题?
  • DLL中对进程外的ActiveX/COM组件(EXE形式)的对象实例化问题,DLL内不支持调进程外COM??
  • 怎样将原来不支持COM的mfc类,成为com类
  • MFC实现COM的接口映射的问题。请教高手。急。。
  • COM+组件的注册问题?
  • 关于COM组件的问题
  • com组件全局变量问题
  • COM组件和主程序之间的数据传输问题??
  • MFC中添加服务器组件的注册问题。
  • Com组件使用Recordset的游标问题

相关文章

  • 2017-06-05 Ctrl+C是不是能够结束线程?
  • 2017-06-04 CFormView使用ActiveX不能显示及DDX出错
  • 2017-06-05 知道了一个程序的主窗口hwnd,怎么得到这个进程的hInstance?
  • 2017-06-05 请教各位大虾,如何用VC对INI文件进行操作。
  • 2017-06-04 大家帮我看一下是什么原因?急
  • 2017-06-05 关于两进程共享串口通信高分求解
  • 2017-06-04 VB的exe组件通过DCOM发布
  • 2017-06-05 发现同样的[in]接口函数,dll和exe表现的不一样!
  • 2017-06-05 执行任意线程,等待超时后,该怎么处理这个线程呢?
  • 2017-06-04 请问谁有《COM原理与应用》的源代码,网上的联接好像不存在了?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • COM里只执行一次的函数
    • 求助,activeX真实环境配置
    • 给自己另一个帐号散点分,分不够了
    • 求64位的STRMBASElib文件
    • 关于WaitForSingleObject的疑问
    • 能否用一句话说情楚,com编程和rpc编程的关系?
    • 跪求,怎么才能在创建进程时隐藏该进程的窗口
    • 我得到一个DLL文件,但没有LIB文件,我用了一个工具转换出来一个LIB,把该文件加入我的工程还是不行。
    • !关于内存使用的问题:windows任务管理器中列出的某进程使用内存的数目是否真实地反映了该程序的内存使用量,如果要看程序使用的内存是
    • 请问一个vc调用excel的问题:向excel中添加了数据后保存时怎样弹出提示框?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有