易语言使用正则以后,无法使用多线程的原因

作者: admin 分类: 易语言 发布时间: 2019-06-20 00:06

最近研究了易语言的多线程,看了一个多线程培训的前面几节内容,感觉对相关的概念以及多线程的使用方法理解的更透彻了,于是把以前写的一个程序改写成多线程。

结果在修改的过程中发现使用了正则以后,多线程就出现了问题。经过反复排除,最后发现是在使用正则的过程中,一个正则匹配子程序里面的一个变量设置为了静态变量。因为每个线程都相当于一个独立运行的程序片段,但是如果某个变量设置为了静态,那就具有全局变量或者是程序集变量的特点了,当多个线程去改写全局变量或者程序集变量时,就会出现冲突。去掉这个静态变量这个属性以后,就没这个问题了。

另外还有如下启发:

1,多线程里面的每一个线程都相当于一段独立运行的程序片段。

2,线程里面可以有其它子程序,只要子程序或者线程内部是调用的局部变量,并不会影响多线程。

3,在线程内部尽量都只对局部变量操作,如果需要对全局变量(包括组件,组件也是一种形式的全局变量),那就需要使用许可证。

4,启动线程前面的代码,如果是循环之类的,或者在循环里面有对全局变量或者组件进行操作(主要是改写,赋值操作),那就要放到线程中执行,在我写这个程序的过程,就因为在主循环中,对一个标签进行了赋值操作,导致多线程程序运行一段时间以后就卡住不动了。最后把主循环写到了线程里,然后再在主循环里面启动其它多线程,完美解决问题。

标签:

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Powered by 草根站长笔记 © 2015-2020 草根站长笔记 Inc.版权所有,禁止转载