社区
网络通信/分布式开发
帖子详情
在多线程里调用同一com提示"应用程序调用一个已为另一线程整理的接口"
shuihan20e
2009-02-06 01:23:39
搜索了一下,CoInitializeEx(0,COINIT_MULTITHREADED),但是仍然出错,郁闷
...全文
1374
16
打赏
收藏
在多线程里调用同一com提示"应用程序调用一个已为另一线程整理的接口"
搜索了一下,CoInitializeEx(0,COINIT_MULTITHREADED),但是仍然出错,郁闷
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
金卯刀
2009-02-06
打赏
举报
回复
支持僵哥的建議
僵哥
2009-02-06
打赏
举报
回复
[Quote=引用 14 楼 shuihan20e 的回复:]
一个简单的线程程序里使用这个接口没有问题,在TIdTcpServer.Execute里有错误
[/Quote]
1.关键要看Indy的版本,如果是支持线程池的,那么对于线程CoInitializeEx(0,COINIT_MULTITHREADED)的执行代码应该放在实际的线程开始执行的位置,CoUninitialize放到线程生命周期结束的位置去.
2.对于使用接口关键在于接口引用计数的维护,对于接口千万一个宿主接口的释放不先于子接口,所有接口的释放不先于CoUninitialize,尽可能不使用隐式接口引用,比如B是A(TA类)下面的接口方法返回TB,C是TB下面的接口方法返回TC,那么千万不能使用:
var
C1: TC;
begin
C1 := A.B.C;
end;
如此就会造成在该函数执行结束之前有一个隐含的B1存在.而如果直接在end;之前就执行CoUninitialize那么问题就出来了.
shuihan20e
2009-02-06
打赏
举报
回复
一个简单的线程程序里使用这个接口没有问题,在TIdTcpServer.Execute里有错误
shuihan20e
2009-02-06
打赏
举报
回复
[Quote=引用 12 楼 unsigned 的回复:]
引用 10 楼 shuihan20e 的回复:
tcpserver.execute里,启动接口的线程在哪,-_-!!!
tcpserver是什么东西?
[/Quote]
TIdTcpServer
僵哥
2009-02-06
打赏
举报
回复
[Quote=引用 10 楼 shuihan20e 的回复:]
tcpserver.execute里,启动接口的线程在哪,-_-!!!
[/Quote]
tcpserver是什么东西?
shuihan20e
2009-02-06
打赏
举报
回复
[Quote=引用 8 楼 unsigned 的回复:]
另外还要看看COM组件本身是否支持.
[/Quote]
支持的
shuihan20e
2009-02-06
打赏
举报
回复
tcpserver.execute里,启动接口的线程在哪,-_-!!!
金卯刀
2009-02-06
打赏
举报
回复
[Quote=引用 6 楼 shuihan20e 的回复:]
引用 5 楼 Avan_Lau 的回复:
多線程情況下,用TInterfaceList來管理接口
给个例子可以吧?
[/Quote]
用法參考這里
http://www.swissdelphicenter.ch/torry/showcode.php?id=898
僵哥
2009-02-06
打赏
举报
回复
另外还要看看COM组件本身是否支持.
僵哥
2009-02-06
打赏
举报
回复
[Quote=引用楼主 shuihan20e 的帖子:]
搜索了一下,CoInitializeEx(0,COINIT_MULTITHREADED),但是仍然出错,郁闷
[/Quote]
不是你的线程当中使用CoInitializeEx(0,COINIT_MULTITHREADED)就可以的,关键在于启动接口的线程.
shuihan20e
2009-02-06
打赏
举报
回复
[Quote=引用 5 楼 Avan_Lau 的回复:]
多線程情況下,用TInterfaceList來管理接口
[/Quote]
给个例子可以吧?
金卯刀
2009-02-06
打赏
举报
回复
多線程情況下,用TInterfaceList來管理接口
shuihan20e
2009-02-06
打赏
举报
回复
有解决方法的
eynStudio
2009-02-06
打赏
举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
在不同的线程中使用同一个接口,违反了COM接口调用规则
[/Quote]
yes!
bdmh
2009-02-06
打赏
举报
回复
在不同的线程中使用同一个接口,违反了COM接口调用规则
bdmh
2009-02-06
打赏
举报
回复
检查其它引用到com的线程是否结束
Java
多
线程
快速上手经典
从零开始讲述Java
多
线程
的核心知识,通过板书和一步一步画图的方式,引领大家逐步去理解和掌握这些知识;并深入分析源码实现,理解背后的实现原理,知其然还要知其所以然。从
多
线程
核心基础讲起,理解
线程
的风险,多种创建
线程
的方式;再到深入理解
线程
的状态;然后是
线程
的基本操作。系统、深入、快速上手实现
多
线程
。 课程目标: 快速上手掌握Java
多
线程
的经典课程, 系统、全面、深入掌握Java
多
线程
的核心知识主讲老师:CC老师 20年Java开发和使用经验,多年的首席架构师和CTO,畅销原创书籍《研磨设计模式》的作者。 参与和领导了上百个大中型项目的设计和开发,在互联网应用系统架构、系统设计、 应用级框架和中间件开发等方面具有很多经验和领悟。 更为难得的是,入行20年,仍然奋战在技术一线,深知一线架构师需要掌握哪些技术、 掌握到什么程度、一线架构设计会遇到哪些坑、如何才能做出最合适的架构设计,经验最难得!适应人群: 想要系统、深入学习Java
多
线程
已有Java开发基础,想要快速掌握Java
多
线程
补充Java
多
线程
知识,为进入一线大厂做准备学习方式:随到随学课程内容:第一节课:系统理解Java并发编程的知识体系 1:为什么要掌握Java并发编程 2:整个课程的目标 3:整个课程的学习内容第二节课:
线程
必备基础知识 1:理解
线程
是什么,理解进程,图示 2:理解轻量级的含义 3:理解时序调度,
线程
是时序调度的基本单元,图示 4:理解调度方式:抢占式,图示 5:理解我们写的程序基本都是
多
线程
的应用,图示 6:理解并发和并行,图示 7:为什么需要
线程
第三节课:
线程
的风险 1:
线程
安全性问题,图示 2:
线程
的活跃度问题:死锁、饥饿、活锁,图示 3:
线程
的性能问题,这
里
主要是
线程
间切换 上下文的开销第四节课:创建
线程
的方式之一 1: 代码演示:实现Runnable
接口
的方式来创建
线程
2:学习Thread类的方法和属性的应用 3:学习Thread类的源码第五节课:创建
线程
的方式之二 1:继承Thread的方式来创建
线程
2:继续学习Thread类的源码,分析
线程
初始化过程 3: 代码演示:演示ThreadGroup 4: 代码演示:演示daemon
线程
,理解daemon
线程
和主
线程
的关系第六节课:创建
线程
的方式之三 1: 代码演示:匿名内部类的方式来创建
线程
2:继续学习Thread类的源码,分析run方法的
调用
过程 3:代码演示:callable的方式来创建
线程
,带返回值 4: 学习FutureTask的部分源码,分析run方法到call方法的
调用
过程第七节课:
线程
状态详解 1:通过Thread源码来查看
线程
状态的定义 2:一步一步画图,讲述状态之间的变迁第八节课:
线程
的基本操作sleep 和yield 1:阅读Thread源码 2:代码演示:sleep的使用 3:代码演示:yield的使用 4:sleep和yield的对比理解第九节课:
线程
的基本操作join和interrupt 1:阅读Thread源码 2:代码演示:join的使用 3:代码演示:interrupt的使用这
里
是《Java并发编程与源码分析》的第一部分——讲述
多
线程
核心基础实现快速上手
多
线程
的经典之作
多
线程
调用
同一
静态方法会有
多
线程
问题吗
多
线程
调用
同一
静态方法会有
多
线程
问题吗项目中有类的public static方法有可能被
多
线程
同时
调用
,所以有这个疑问,大致网上查了下自己没有试验过。 只要在静态函数中没有处理
多
线程
共享数据,就不存在着
多
线程
访问同
一个
静态方法会出现资源冲突的问题,静态方法是否引起
线程
安全问题主要看该静态方法是否对全局变量(静态变量static member)进行修改操作
测试多个
线程
调用
同一
静态方法(无静态变量)时是否有
线程
安全问题
思路: 使用两个
线程
调用
同一
静态方法(该静态方法不引用静态变量)、第
一个
线程
被阻塞的时间大于第二个
线程
被阻塞的时间,若第
一个
线程
与第二个
线程
的输出结果相同,则两个
线程
调用
同一
静态方法存在
线程
安全问题,若第
一个
线程
于第二个
线程
的输出结果不同,则两个
线程
调用
同一
静态方法不存在
线程
安全问题; package
com
.shawearn.test; /** * 测试多个
线程
调用
同一
静态方法(无静态变
多
线程
中对
同一
socket
调用
send/sendto
群
里
问
多
线程
环境中对
一个
socket进行send 可以不可以; 答: 这个问题不是
多
线程
问题 , 是TCP / UDP 的问题; 如果是tcp ,这是个错误的设计,如果你无视数据顺序,那可以 ;如果是udp可以; TCP: 在win32上,我没有找到send是否
线程
安全, 但找到了WSASend并不是
线程
安全的.因此假设send也不是
线程
安全的,仅仅假设; 在posi...
windows下
多
线程
通信方法(
多
线程
访问
同一
变量)
多
线程
知识简介
同一
进程中可以包含多个
线程
,由于进程中的多个
线程
可以共享进程中的资源,所以使
同一
进程中的多个
线程
之间通信相对比较简单。 当需要有多个
线程
来访问
一个
全局变量时,通常我们会在这个全局变量前加上volatile声明,来告诉编译器这个全局变量是“易变”(更直接的讲是“直接存取原始内存地址”,更明确的说是不要编辑器去读缓存中的数据,而是直接从内存中获取变量的值)的,让编译器不要对这个变量
网络通信/分布式开发
1,593
社区成员
32,963
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章