多数情况下,想要实现一个软件高性能并且复杂的功能,难免要使用多线程来解决。
什么叫多线程?
正常情况下,软件默认都是单线程的,也就是说按照一条路走到黑,但是有些情况下,我们需要让软件异步执行多个事件,
这种情况下,就很可能需要使用“多线程”来解决开发需求。
简单来说,多线程就是异步执行多个不同的事情。
多线程的用法?
多线程与易语言的“子程序”调用方式相似,但要使用“启动线程()”与子程序指针的方式,来调用某个想要线程执行子程序。
多线程的结束?
- .版本 2
- .支持库 EThread
- 强制结束线程 ()
- 关闭线程句柄 ()
复制代码在建议的编程规范中,如果使用多线程,在确保线程运行完毕后,一定要使用此代码结束线程,避免浪费系统资源。
多线程通行证的用法?
在多线程编写使用过程中,如果牵扯到读写或修改窗口组件的行为,这种情况下如果只是单纯的调用线程,很容易引起程序的崩溃。 所以你需要为不安全的代码,建立一层保护措施,在易语言中,这个名词叫做“通行证”。
- .版本 2
- .支持库 EThread
- 创建进入许可证 ()
- 进入许可区 ()
- 退出许可区 ()
- 删除进入许可证 ()
复制代码
这四个代码就是许可证的核心内容,通常你也需要按照这样的顺序来执行。
1.先使用创建进入许可证(),返回一个整数型许可证句柄,到任意整数型变量;
2.在线程子程序中,牵扯到敏感操作(如读写组件等)之前,调用进入许可区(许可证句柄);
3.在线程子程序中,敏感操作执行完毕后,调用退出许可区(许可证句柄);
4.在线程完全运行完毕后,或程序将被销毁时,严谨起见,删除进入许可证(许可证句柄)。
以上的代码可以简单理解为,创建许可证是为了创建一个唯一的“通行证”。
在执行危险代码前,告诉系统这个“通行证”要开始使用了,在通行证期间的代码要一个一个执行,而不要同时执行,以保护代码逻辑正确。
执行危险代码后,退出许可区,告诉这个“通行证”暂时用完了,下面的代码就可以按多线程逻辑异步执行了。
当你完全用完许可证后(如:程序即将结束、不会再用这方面的线程时),你需要删除进入许可证,并且这个许可证彻底失效,如果想要再使用必须重新执行完整步骤。
多线程注意事项?
这是一个关键的问题。
多线程的确可以提升软件的执行效率,也可以更严谨快速的执行相关的代码,但是一定要注意以下事项:
1.每个成功启动的线程就算【1个线程数】,具体程序能运行多少线程与电脑配置是相关的,但通常情况下,建议同时线程不要超过200;
2.如果不严谨写出的线程命令,对软件来说是极不安全的,它可能会让系统无法判定“先来后到”,从而造成软件的崩溃(易语言很常见),所以一定要避免在线程内操作UI组件,这有很大几率会造成软件的崩溃,如果一定要操作(如读写等),就要使用线程许可证来解决,并且一定要严谨的编写代码;
3.在复杂的程序下,一个线程可能需要2~3个或更多许可证来限制,因为可能只要有一环危险代码没有限制,其他的限制都是徒劳无功的;
4.在模块、dll等情况下,无法使用线程(但可以创建一个窗口,再进行使用);
5.线程启动后没办法很方便的确定是否运行完毕,以及无法直接获取返回值,但可以通过延迟等待(或检测等待)的方法检测。
本文原创发布:两点半俱乐部社区(www.230club.com)
转载请注明原地址。
|