精易论坛

标题: 谈谈js计算/初始化COM库/和多线程调用js组件问题 [打印本页]

作者: 落款hMZ    时间: 2017-5-4 01:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: ManNanIsMe    时间: 2017-5-4 01:37
不错,等待测试,话说附件在哪
作者: 落款hMZ    时间: 2017-5-4 01:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 自然卷。    时间: 2017-5-4 02:01
mark
作者: Mr.Yang    时间: 2017-5-4 02:15
谢谢楼主分享
作者: hackbats    时间: 2017-5-4 02:40
一直以为CoInitialize 就是开辟一个单独的空间运行COM 单线程我从来不调用CoInitialize  难怪我的软件那么容易崩溃。。。学习了

作者: Cand    时间: 2017-5-4 09:19
我觉得楼主写的这样的文章应该打赏
作者: 冰岛    时间: 2017-5-4 09:21
感谢分享~
作者: 绯樱    时间: 2017-5-4 09:48
我去,如果真的,那么这个问题很重要……
作者: 绯樱    时间: 2017-5-4 09:55
每个调用Com的线程中调用CoInitialize来初始化出每个线程自己的套间,这样也可以吧
作者: faith0    时间: 2017-5-4 10:01
人才
作者: 镇坛道德标杆    时间: 2017-5-4 10:03
是的  我一直用的就是CoInitializeEx
作者: 落款hMZ    时间: 2017-5-4 10:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黑猫よ__    时间: 2017-5-4 11:14
STA套间是一种串行模式,并不完完全全是单线程,看了一下例子,主要还是你的调度问题,要是STA这么不堪早就不会存在了。
作者: 黑猫よ__    时间: 2017-5-4 11:14
STA套间是一种串行模式,并不完完全全是单线程,看了一下例子,主要还是你的调度问题,要是STA这么不堪早就不会存在了。
作者: xiaohui12    时间: 2017-5-4 11:37

作者: 落款hMZ    时间: 2017-5-4 11:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黑猫よ__    时间: 2017-5-4 11:59
落款hMZ 发表于 2017-5-4 11:48
把CoInitialize 放在循环之外,每个线程只调用一次,还是崩溃了,串行是否意味着无法高并发执行?

...

在多线程下STA会比MTA更加的安全,例子中的崩溃问题,更多的可能在于易语言对于COM对象的调度处理,而不是COM对象本身和套间的问题。
作者: 黑猫よ__    时间: 2017-5-4 12:02
落款hMZ 发表于 2017-5-4 11:48
把CoInitialize 放在循环之外,每个线程只调用一次,还是崩溃了,串行是否意味着无法高并发执行?

...

你的例子也不是很科学,你可以尝试用线程池来做实验。并发如此多的线程,崩溃确实也正常。
作者: 御风软件    时间: 2017-5-4 14:25
没有下载源码,但是,不是你代码问题,就是易语言自身的缺陷

这里是对你这篇文章,我写的一篇回应:http://125.confly.eu.org/forum.php?mod=viewthread&tid=14015786
作者: 512993964    时间: 2017-5-4 15:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黑白郎君    时间: 2017-5-4 16:47
崩溃跟API没有 绝对的关系吧,易语言很早就有人提出对COM支持有问题的了!
作者: 落款hMZ    时间: 2017-5-4 17:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 落款hMZ    时间: 2017-5-4 17:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 御风软件    时间: 2017-5-4 19:27
落款hMZ 发表于 2017-5-4 17:29
认真看完了,多谢您的讨论
我这个帖子里所说的一切的一切,都有一个前提,那就是:
这个测试程序  使用 ...

易语言高并发操作IO,百分百崩溃,许可证也是没有用的。
但是这个崩溃,不一定会马上崩溃,而是在运行一段时间后闪退。

磁盘的读写能力也是有限制的,如果你超过了他的限制,那么不可能系统死掉,只能程序被杀死。
后面,我是减少了磁盘的读写,用内存缓存起来,后面再更新到磁盘。所以,高并发解决不了。是限制了。

所以,这是和语言无关的,是机器问题。
但是,其他语言在这种情况处理的会比易语言好,返回错误原因,或自动排队等待等

另外说一句,我现在已经用C#了,除了写代码中英切换不习惯,其他方面的真的比易语言好多了
作者: a1108215    时间: 2017-5-6 18:57
来学习下
作者: KeRui    时间: 2017-5-6 22:45
这是什么东西  ,是好东西吗  
作者: o暴走的橘子o    时间: 2017-5-8 00:59
这是什么东西  ,是好东西吗
作者: 艾瑞莉娅    时间: 2017-6-21 04:06
对楼主的看法很赞同,我的软件里也是坚持不给任何COM封装的类的初始和销毁加这2个API,而是在多线程的主循环外面调用Ex(0,0)示例代码:


作者: lsj8924    时间: 2017-7-8 14:22

观摩观摩  学习下
作者: spring90    时间: 2017-7-18 18:42
我想很低调,可太多大神逼我出山,我把字放大先!
我想很低调,可太多大神逼我出山,我把字放大先!
作者: spring90    时间: 2017-7-18 18:43
我想很低调,可太多大神逼我出山,我把字放大先!
我想很低调,可太多大神逼我出山,我把字放大先!
作者: sunmoonstar    时间: 2017-7-20 09:26
这个必须顶
作者: 跳动的魔法    时间: 2017-12-5 10:29
本帖最后由 跳动的魔法 于 2017-12-5 10:59 编辑

编译出来测试速度很快,谢谢分享。
作者: nicewell    时间: 2018-9-4 20:31
新技能get,感谢大佬分享
作者: 46130    时间: 2019-2-27 06:22
js计算/初始化COM库/和多线程调用js组件问题
作者: hmz59420    时间: 2019-3-28 19:06
感谢分享感谢分享感谢分享感谢分享
作者: 1282982641    时间: 2020-8-21 18:28
感谢分享,很给力!
作者: SoloCat    时间: 2022-3-19 09:52
艾瑞莉娅 发表于 2017-6-21 04:06
对楼主的看法很赞同,我的软件里也是坚持不给任何COM封装的类的初始和销毁加这2个API,而是在多线程的主循 ...

你这和楼主的思路偏航了,八竿子打不着
作者: menghan    时间: 2022-11-1 13:40
感谢楼主分享,支持一下~~
作者: clm6068    时间: 2023-1-27 07:47
#在这里快速回复#实际上这个地方并不难找到
作者: 胖虎O    时间: 2023-3-11 00:40
感谢分享了
作者: dxc324    时间: 2023-8-30 09:45
牛皮牛皮




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4