易语言多线程用什么模块好

多线程模块是易语言中多线程处理的强大工具。

说白了,就是第一个模块(&3 4 ;乘法模块&3 4 ;)。
没有这一步,其他一切都是白搭。

要创建线程,必须传递函数名。
只需编写一个函数并将其设为您想要创建的新线程即可。

交付后不要忘记启动它。
如果线程没有启动,它将挂起并且无法工作。
多线程最大的开销是同步。
互斥体受到财富的保护。
信号量管道的数量。

线程运行后自动停止。
但我们想要强烈停用线程的末尾。
这个东西用多了很容易出麻烦。

你自己看看。
必须反复考虑线同步。

易语言多线程一直卡死?

哎呀,我记得有一次,我的程序创建了一个无限循环,当时我很头疼。
我的程序正在处理大量数据,但其中存在逻辑问题,导致它陷入困境。
当时我是新人,所以我只是很忙,认为只要改变错误的逻辑就可以解决问题。
结果越改越糟糕,程序立刻就卡住了。

那时我就意识到我需要更从容地对待事情,而不是一下子急于求成。
我只是在代码中添加了几秒钟的延迟。
虽然看起来没什么用,但确实有效,程序不再卡顿了。
后来我聪明了,学会了写时钟、换线程。
程序的稳定性直接提升了几个级别。

现在回想起来,那种经历告诉我们做程序不能心急,要慢慢来。
有时候,如果你停下来思考一下,你会发现更多的问题。
尝试一下,也许也会有效!

易语言如何使用多线程|易语言多线程展示

说实话,我觉得易语言的多线程很好玩。
你提到的步骤基本上都是Yiyu的套路,但是在实际操作中,有些部分是需要特别注意的。

例如,要创建桌面程序,可以直接单击右上角的“程序”菜单,但有时使用快捷键 Ctrl+N 效率更高。
在设计界面时,我通常会添加额外的文本框,以方便实时日志输出。
第一个标签包含执行时间,第二个标签包含操作结果。
这样的布局还是比较合理的。

我在设计子程序时有一些习惯。
在定义整型参数N时,特意将其初始化为等于0的值,以避免调用时出错。
对于循环计数,我们采用“for i=1 to N”的写法,比“循环计数”命令直观得多。
结果存储在第二个标签中。
我通常使用“标签1 .文本=运算结果”的格式,这样比直接赋值更清晰。

实现多线程任务时最重要的一步就是传递参数。
你提到的“启动线程”命令的第一个参数是任务子程序,第二个参数是N值。
这不是问题。
不过,有一些细节需要注意。
如果 N 是动态计算的,就像从输入框中获取的那样,您需要确保您的线程获得最新值。
否则,可能会出现错误。
这个坑我以前也踩过。
一个线程使用了上次计算的N值,但是结果乱了。

正常执行与正常按钮代码类似,但是当直接调用任务子程序时,我们通常会添加一条“线程同步”指令,让主线程等待计算完成后再继续。
这个技巧非常有效。
否则,主界面将会冻结。

为了计算执行时间,正确使用“获取启动时间”命令。
然而,如果操作非常快,时间差可以是个位数毫秒。
在这种情况下,显示它是没有意义的。
为了清楚地展示效果,我们特意将 N 设置为 1 0000,以便您可以看到以秒为单位的时间差。

要查看测试结果,我们建议使用计时器组件分别记录开始和结束时间。
这比手动计算“开始时间”的差异要准确得多。
对于CPU密集型任务,多线程实际上可以快得多,但这并不是绝对的。
我测量了一次大小为 5 000x5 000 的矩阵乘法。
使用 4 核 CPU 进行多线程处理,速度几乎是单线程处理的两倍。
但对于2 核CPU来说,效果就不那么明显了。

最需要注意的是线程安全。
Yi语言的线程模型比较简单,没有预先构建的锁定机制。
如果多个线程同时写入,“保存到第二个标签”操作肯定会出现偏差。
我当时处理这个问题的方式是为每个线程创建单独的临时标签,最终在主线程上统一更新。
当然,这并不是最优解,而且这只是一个临时措施。

总的来说,用Yi语言实现多线程并不困难,但需要注意细节才能使其可靠、快速地运行。
你提到的步骤很基本,但是当你真正应用的时候,总会有意想不到的小问题在等着你。