|
楼主 |
发表于 2017-5-4 17:29:17
|
显示全部楼层
湖北省孝感市
认真看完了,多谢您的讨论
我这个帖子里所说的一切的一切,都有一个前提,那就是:
这个测试程序 使用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相冲突的地方,实际上这个地方并不难找到
|
|