一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种指定软硬件资源的集中式LabVIEW处理方法与流程

2022-02-22 05:43:55 来源:中国专利 TAG:

一种指定软硬件资源的集中式labview处理方法
技术领域
1.本发明涉及计算机领域,特别涉及一种指定软硬件资源的集中式labview处理方法。


背景技术:

2.在平时的项目应用程序编写过程中经常需要对外部的软硬件资源进行读写调用,比如电脑上的数据库接口或者是通过与电脑rs232串口相连的仪器仪表等。这些资源在整个系统中存在唯一性,也就意味着在任意一个时间段内,有且只能有一个程序线程在调用这个资源,如果出现有一个线程已经调用了这个资源,而另外又有一个线程去调用的话,程序将出现无法预测的错误,或者第二个线程直接无法调用该线程,引起冲突。
3.目前一般的常规做法是尽量将整个应用程序编写成单线程模式,至少对某个资源的操作都只在一个主线程里,这样程序运行过程中对某个资源的调用都是唯一的,从根本上杜绝了不同线程的调用冲突问题。很多时候这样是可行的,但是这样的做法会导致资源调用速度,资源的执行时间都会累计到程序主线程上面,例如将测试数据保存到数据库,主线程就必须等到保存完成才能执行下一步操作,一旦保存速度慢,会拖慢整个主线程的节奏,还有一个前提是一定要单线程操作某个资源,如果必须多线程则不行,只能增加一个全局布尔量去标记资源是否在占用中,显得不那么灵活,而且每次操作完资源就必须关闭,另一个线程再打开,无形中又增加了运行时间。


技术实现要素:

4.本发明目的是:提供一种指定软硬件资源的集中式labview处理方法,用来实现可在多线程中轻松调用资源,避免资源冲突,也可以在主线程不需要知道资源调用结果的情况下,资源的执行不影响到主线程的执行效率的目的。
5.本发明的技术方案是:一种指定软硬件资源的集中式labview处理方法,资源操作vi的结构是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,每次调用这个vi只循环一次;枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作;打开资源后产生的资源句柄通过while循环的移位寄存器记录在内存中,资源一直处于打开状态并记录在移位寄存器中,其他操作从移位寄存器获取资源句柄执行。
6.优选的,为了让资源操作vi在不同线程运行时不会引起对资源的操作冲突,将让资源操作vi的属性设置为非重入执行;非重入执行表示本vi在内存中只有一个副本,每当线程需要调用资源操作vi时,都是运行这一个副本,假如vi已经被调用执行,那么系统自动挂起别的调用方,直到当前操作运行结束,系统按顺序让vi执行下一个操作。
7.优选的,如果存在不需要等待资源操作完成就可以进行下一步的情况,那么需要增加一个队列:队列作为一个消息的消费者,是一个单独的子线程;当主线程产生一个队列
消息后,队列消费者vi就执行指定的操作,而主线程在发送完队列消息后立即进行下一步操作。
8.本发明的优点是:1.本发明提出的指定软硬件资源的集中式labview处理方法,对资源的操作做到集中化处理,一个vi完成对资源的所有操作。
9.2.本发明将资源操作vi的属性设置为非重入执行,多个线程对单个资源进行操作时,不会引起资源冲突。
10.3.本发明通过增加一个队列,在有需要时,方便实现对资源的独立线程操作,不影响到主线程。
附图说明
11.下面结合附图及实施例对本发明作进一步描述:图1为资源操作vi的结构框架;图2为队列消费者vi结构框架。
具体实施方式
12.如图1所示,为一个简单的资源操作vi的结构框架。整体结构借鉴于功能性全局变量,也是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,意味着每次调用这个vi只循环一次。枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作。打开资源后产生的资源引用或者说是资源句柄通过while循环的移位寄存器记录在内存中,这样的好处就是资源一直处于打开状态并记录在移位寄存器中,其他的操作只需要从移位寄存器获取资源句柄就可以执行了,不需要反复的对资源开启关闭。
13.为了让资源操作vi在不同线程运行时不会引起对资源的操作冲突,将vi的属性设置为非重入执行。非重入执行表示本vi在内存中只有一个副本,每当线程需要调用资源操作vi时,都是运行这一个副本,假如vi已经被调用执行,那么系统自动挂起别的调用方,直到当前操作运行结束,系统按顺序让vi执行下一个操作。这样通过系统自己的互锁,既避免了对资源的冲突,还简化了编写程序的复杂度,避免一些不必要的错误。
14.如果将资源操作vi集成到线程流程中的话,资源的操作的耗时依旧会累计到线程的执行上。当然如果线程本身就需要等待资源操作完成才能进行下一步,那这样的耗时累计是必须的,也是允许的,但是如果存在一些不需要等待资源操作完成就可以进行下一步的情况,那么需要加个队列,如图2所示。队列作为一个消息的消费者,是一个单独的子线程,那么当主线程产生一个队列消息后,队列消费者vi就可以执行指定的操作,而主线程在发送完队列消息后可以立即进行下一步操作,这样资源的操作可以做到与主线程相互独立开,不会影响到主线程。
15.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明主要技术方案的精神实质所做的修饰,都应涵盖在本发明的保护范围之内。


技术特征:
1.一种指定软硬件资源的集中式labview处理方法,其特征在于,资源操作vi的结构是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,每次调用这个vi只循环一次;枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作;打开资源后产生的资源句柄通过while循环的移位寄存器记录在内存中,资源一直处于打开状态并记录在移位寄存器中,其他操作从移位寄存器获取资源句柄执行。2.根据权利要求1所述的指定软硬件资源的集中式labview处理方法,其特征在于,为了让资源操作vi在不同线程运行时不会引起对资源的操作冲突,将让资源操作vi的属性设置为非重入执行;非重入执行表示本vi在内存中只有一个副本,每当线程需要调用资源操作vi时,都是运行这一个副本,假如vi已经被调用执行,那么系统自动挂起别的调用方,直到当前操作运行结束,系统按顺序让vi执行下一个操作。3.根据权利要求2所述的指定软硬件资源的集中式labview处理方法,其特征在于,如果存在不需要等待资源操作完成就可以进行下一步的情况,那么需要加个队列:队列作为一个消息的消费者,是一个单独的子线程;当主线程产生一个队列消息后,队列消费者vi就执行指定的操作,而主线程在发送完队列消息后立即进行下一步操作。

技术总结
本发明公开了一种指定软硬件资源的集中式LabVIEW处理方法,资源操作vi的结构是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,每次调用这个vi只循环一次;枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作;打开资源后产生的资源句柄通过while循环的移位寄存器记录在内存中,资源一直处于打开状态并记录在移位寄存器中,其他操作从移位寄存器获取资源句柄执行。本发明对资源的操作做到集中化处理,一个vi完成对资源的所有操作。本发明将资源操作vi的属性设置为非重入执行,多个线程对单个资源进行操作时,不会引起资源冲突。本发明通过增加一个队列,方便实现对资源的独立线程操作,不影响到主线程。不影响到主线程。不影响到主线程。


技术研发人员:吕元斌
受保护的技术使用者:苏州易德龙科技股份有限公司
技术研发日:2021.10.29
技术公布日:2022/1/28
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献