如果你还在为: 程序的异常中所影响,串口未能释放; 为程序的繁杂所困扰,while循环太多; 为人手充足却无法发挥所无奈,任务无法合理分配; 那么下面的内容一定要看哦。
首先我们来看下多线程 一般我们理解,在程序框图上每建立一个并行循环就是一个线程 这样理解不能说错误,但也不全面 因为假如你的主程序无故终止运行,你的一些操作就会出错,例如资源没有释放之类,造成的影响有大有小。 下面我们就来看下我要说明的那个到底是啥 我们先看文件夹多线程演示 在这里实现我们功能的是异步调用 如下图所示当布尔按钮按下时我们调用子VI
动态事件结构只是为了看下子程序的执行,如果不理解可以忽略 用其他例如:队列,全局变量这些东西代替下。
子函数只是个自加一的函数 为了观察清除我们把两个程序都打开 点击运行多线程详解,点击布尔,我们发现子VI跟着运行了。
然后我们点击多线程讲解的红色中断,会发现主程序中断了,但子程序还在执行。 这时候可以看到,其实子VI相当于开辟了一个独立的线程。
接下来我们看文件夹 多线程改 程序我改动了些 在子VI里面,我判断了主程序是否执行
如果未执行,则终止该循环
这时我们发现点击主程序的中断按钮,该子程序也停止了 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 例子就举到这 下面我们总结下这个的用处 1. 人员可以合理分配 我们可以将串口,tcp,仪器控制,机器人控制,数据采集等等的东西变成一个单独的线程,他们可以自己编写自己的循环,而非中间单独的模块。这样分工明显,整合方便。 2.动态资源的管理。假设我们有3个串口,假如我们今天想加1个,明天又想加1个,甚至加N个。我们可以利用动态线程来处理硬件数据。假如有个数组非常大,我们也可以将其分割为N个,开放N个动态线程去并行处理 3. 防止软件异常 假如程序被异常结束,但我的资源未释放,尤其很多api调用的资源因为是用的句柄基本上很难释放。这时候我们可以利用子函数结束时,让他去处理资源的释放。因为它是后台的程序。 4. 简化程序的界面 不言而喻程序的界面被简化了,也更有条理了。 5. 软件架构设计 利用多线程,我们可以实现一些非常优秀的labview软件架构的实现。当然这要大家去发掘了。 5.程序开始时资源加载快
附件下载
|