开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 落款hMZ
收起左侧

[已回应] 谈谈js计算/初始化COM库/和多线程调用js组件问题

[复制链接]
头像被屏蔽
结帖率:14% (1/7)
 楼主| 发表于 2017-5-4 17:29:17 | 显示全部楼层   湖北省孝感市
御风软件 发表于 2017-5-4 14:25
没有下载源码,但是,不是你代码问题,就是易语言自身的缺陷

这里是对你这篇文章,我写的一篇回应:http ...

认真看完了,多谢您的讨论
我这个帖子里所说的一切的一切,都有一个前提,那就是:
这个测试程序  使用CoInitializeEX(0,0) 不会崩溃,可以很顺畅的运行,而如果使用 CoInitializeEX(0,2) 或者 CoInitialize(0),就会出现崩溃的问题

这个才是讨论的重点,而不是单独讨论 STA本身是否是线程安全的

由 19楼
黑猫よ__ 指出我的调用可能有问题后,我把CoInitialize(0)放在了循环的外面,重新测试,发现仍然崩溃

按照您帖子中的猜测,我的代码有问题或者易语言本身有问题,那为什么 使用CoInitializeEX(0,0)程序稳定运行呢?我帖子内的代码是大家广泛使用的计算js的方式,易语言我们也改变不了它,那么同样条件下我认为我们可以得出“使用CoInitializeEX(0,0)在高并发中更安全”的结论

另外注意的是,多并发和多线程不是一回事,在多线程里面安全不代表高并发的时候也安全,线程安全跟可以支持高并发没有必然的联系,STA当然是线程安全的,这个我帖子里也说了,但是高并发下是否也安全呢?

最后,您的帖子里有一句话我非常不能赞同:
高并发的情况下,别说易语言了,其他语言未处理好也会崩溃!只是会比易语言好点而已

是这样吗?我的理解是,只要是在windows机制允许范围内的高并发,任何崩溃都是有原因的,且可以得到解决的,也是应当得到解决的,32位程序最多支持的线程是1485个左右,只要windows系统没有崩溃,蓝屏黑屏,而程序崩溃了,被强制退出了,那肯定就是代码里有跟windows相冲突的地方,实际上这个地方并不难找到

回复 支持 反对

使用道具 举报

结帖率:67% (4/6)
发表于 2017-5-4 16:47:49 | 显示全部楼层   广东省广州市
崩溃跟API没有 绝对的关系吧,易语言很早就有人提出对COM支持有问题的了!
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2017-5-4 15:10:31 | 显示全部楼层   江西省赣州市
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 18 天

发表于 2017-5-4 14:25:53 | 显示全部楼层   广东省阳江市
没有下载源码,但是,不是你代码问题,就是易语言自身的缺陷

这里是对你这篇文章,我写的一篇回应:http://bbs.125.la/forum.php?mod=viewthread&tid=14015786
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)
发表于 2017-5-4 12:02:47 | 显示全部楼层   广东省深圳市
落款hMZ 发表于 2017-5-4 11:48
把CoInitialize 放在循环之外,每个线程只调用一次,还是崩溃了,串行是否意味着无法高并发执行?

...

你的例子也不是很科学,你可以尝试用线程池来做实验。并发如此多的线程,崩溃确实也正常。
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)
发表于 2017-5-4 11:59:49 | 显示全部楼层   广东省深圳市
落款hMZ 发表于 2017-5-4 11:48
把CoInitialize 放在循环之外,每个线程只调用一次,还是崩溃了,串行是否意味着无法高并发执行?

...

在多线程下STA会比MTA更加的安全,例子中的崩溃问题,更多的可能在于易语言对于COM对象的调度处理,而不是COM对象本身和套间的问题。
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:14% (1/7)
 楼主| 发表于 2017-5-4 11:48:49 | 显示全部楼层   湖北省孝感市
黑猫よ__ 发表于 2017-5-4 11:14
STA套间是一种串行模式,并不完完全全是单线程,看了一下例子,主要还是你的调度问题,要是STA这么不堪早就不会 ...

新建位图图像.jpg

把CoInitialize 放在循环之外,每个线程只调用一次,还是崩溃了,串行是否意味着无法高并发执行?

点评

你的例子也不是很科学,你可以尝试用线程池来做实验。并发如此多的线程,崩溃确实也正常。   广东省深圳市  详情 回复 发表于 2017-5-4 12:02
在多线程下STA会比MTA更加的安全,例子中的崩溃问题,更多的可能在于易语言对于COM对象的调度处理,而不是COM对象本身和套间的问题。   广东省深圳市  详情 回复 发表于 2017-5-4 11:59
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2017-5-4 11:37:14 | 显示全部楼层   广东省肇庆市
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)
发表于 2017-5-4 11:14:12 | 显示全部楼层   广东省深圳市
STA套间是一种串行模式,并不完完全全是单线程,看了一下例子,主要还是你的调度问题,要是STA这么不堪早就不会存在了。
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)
发表于 2017-5-4 11:14:00 | 显示全部楼层   广东省深圳市
STA套间是一种串行模式,并不完完全全是单线程,看了一下例子,主要还是你的调度问题,要是STA这么不堪早就不会存在了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表