最近研究了易语言的多线程,看了一个多线程培训的前面几节内容,感觉对相关的概念以及多线程的使用方法理解的更透彻了,于是把以前写的一个程序改写成多线程。
结果在修改的过程中发现使用了正则以后,多线程就出现了问题。经过反复排除,最后发现是在使用正则的过程中,一个正则匹配子程序里面的一个变量设置为了静态变量。因为每个线程都相当于一个独立运行的程序片段,但是如果某个变量设置为了静态,那就具有全局变量或者是程序集变量的特点了,当多个线程去改写全局变量或者程序集变量时,就会出现冲突。去掉这个静态变量这个属性以后,就没这个问题了。
另外还有如下启发:
1,多线程里面的每一个线程都相当于一段独立运行的程序片段。
2,线程里面可以有其它子程序,只要子程序或者线程内部是调用的局部变量,并不会影响多线程。
3,在线程内部尽量都只对局部变量操作,如果需要对全局变量(包括组件,组件也是一种形式的全局变量),那就需要使用许可证。
4,启动线程前面的代码,如果是循环之类的,或者在循环里面有对全局变量或者组件进行操作(主要是改写,赋值操作),那就要放到线程中执行,在我写这个程序的过程,就因为在主循环中,对一个标签进行了赋值操作,导致多线程程序运行一段时间以后就卡住不动了。最后把主循环写到了线程里,然后再在主循环里面启动其它多线程,完美解决问题。
标签: 多线程,正则表达式