- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
为了精简,直接点出要点.
第一点.
访问全局变量必须加锁. >>> 这是常识,别问我为什么.
第二点.
多线程入口点必须加 finit 指令将浮点寄存器初始化. >>>>>这个是非常严重的问题,这属于易语言的特有缺陷,因为易语言的算数运算是使用浮点来进行计算的.如果不进行浮点寄存器初始化,会非常容易产生浮点异常,结果就是,程序直接挂掉.(顺带一说,论坛90%的多线程程序都没注意这点,导致多线程异常,那是必然的~)
第三点.
操作组件,操作数据库,等等你不熟悉的支持库命令,必须加锁. >>>>> 什么是加锁,如果加锁都不知道,建议还是别弄什么多线程了,不会稳定的.这又属于易语言的问题,因为当初易语言开发支持库命令时,就根本没考虑多线程的问题.
举例,易语言的库函数会导致多线程必然发生问题的的命令:比如"DLL命令调用转向"这个命令,实现方法就必须设置全局变量,必然多线程问题.
最后点睛之语,菜鸟就别用易语言玩多线程了,不稳定的因素多如牛毛~ |
|