CN113986546A - 一种指定软硬件资源的集中式LabVIEW处理方法 - Google Patents
一种指定软硬件资源的集中式LabVIEW处理方法 Download PDFInfo
- Publication number
- CN113986546A CN113986546A CN202111272273.8A CN202111272273A CN113986546A CN 113986546 A CN113986546 A CN 113986546A CN 202111272273 A CN202111272273 A CN 202111272273A CN 113986546 A CN113986546 A CN 113986546A
- Authority
- CN
- China
- Prior art keywords
- resource
- resources
- loop
- thread
- operations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种指定软硬件资源的集中式LabVIEW处理方法,资源操作vi的结构是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,每次调用这个vi只循环一次;枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作;打开资源后产生的资源句柄通过while循环的移位寄存器记录在内存中,资源一直处于打开状态并记录在移位寄存器中,其他操作从移位寄存器获取资源句柄执行。本发明对资源的操作做到集中化处理,一个vi完成对资源的所有操作。本发明将资源操作vi的属性设置为非重入执行,多个线程对单个资源进行操作时,不会引起资源冲突。本发明通过增加一个队列,方便实现对资源的独立线程操作,不影响到主线程。
Description
技术领域
本发明涉及计算机领域,特别涉及一种指定软硬件资源的集中式LabVIEW处理方法。
背景技术
在平时的项目应用程序编写过程中经常需要对外部的软硬件资源进行读写调用,比如电脑上的数据库接口或者是通过与电脑RS232串口相连的仪器仪表等。这些资源在整个系统中存在唯一性,也就意味着在任意一个时间段内,有且只能有一个程序线程在调用这个资源,如果出现有一个线程已经调用了这个资源,而另外又有一个线程去调用的话,程序将出现无法预测的错误,或者第二个线程直接无法调用该线程,引起冲突。
目前一般的常规做法是尽量将整个应用程序编写成单线程模式,至少对某个资源的操作都只在一个主线程里,这样程序运行过程中对某个资源的调用都是唯一的,从根本上杜绝了不同线程的调用冲突问题。很多时候这样是可行的,但是这样的做法会导致资源调用速度,资源的执行时间都会累计到程序主线程上面,例如将测试数据保存到数据库,主线程就必须等到保存完成才能执行下一步操作,一旦保存速度慢,会拖慢整个主线程的节奏,还有一个前提是一定要单线程操作某个资源,如果必须多线程则不行,只能增加一个全局布尔量去标记资源是否在占用中,显得不那么灵活,而且每次操作完资源就必须关闭,另一个线程再打开,无形中又增加了运行时间。
发明内容
本发明目的是:提供一种指定软硬件资源的集中式LabVIEW处理方法,用来实现可在多线程中轻松调用资源,避免资源冲突,也可以在主线程不需要知道资源调用结果的情况下,资源的执行不影响到主线程的执行效率的目的。
本发明的技术方案是:
一种指定软硬件资源的集中式LabVIEW处理方法,资源操作vi的结构是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,每次调用这个vi只循环一次;
枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作;打开资源后产生的资源句柄通过while循环的移位寄存器记录在内存中,资源一直处于打开状态并记录在移位寄存器中,其他操作从移位寄存器获取资源句柄执行。
优选的,为了让资源操作vi在不同线程运行时不会引起对资源的操作冲突,将让资源操作vi的属性设置为非重入执行;非重入执行表示本vi在内存中只有一个副本,每当线程需要调用资源操作vi时,都是运行这一个副本,假如vi已经被调用执行,那么系统自动挂起别的调用方,直到当前操作运行结束,系统按顺序让vi执行下一个操作。
优选的,如果存在不需要等待资源操作完成就可以进行下一步的情况,那么需要增加一个队列:队列作为一个消息的消费者,是一个单独的子线程;当主线程产生一个队列消息后,队列消费者vi就执行指定的操作,而主线程在发送完队列消息后立即进行下一步操作。
本发明的优点是:
1.本发明提出的指定软硬件资源的集中式LabVIEW处理方法,对资源的操作做到集中化处理,一个vi完成对资源的所有操作。
2.本发明将资源操作vi的属性设置为非重入执行,多个线程对单个资源进行操作时,不会引起资源冲突。
3.本发明通过增加一个队列,在有需要时,方便实现对资源的独立线程操作,不影响到主线程。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为资源操作vi的结构框架;
图2为队列消费者vi结构框架。
具体实施方式
如图1所示,为一个简单的资源操作vi的结构框架。整体结构借鉴于功能性全局变量,也是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,意味着每次调用这个vi只循环一次。枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作。打开资源后产生的资源引用或者说是资源句柄通过while循环的移位寄存器记录在内存中,这样的好处就是资源一直处于打开状态并记录在移位寄存器中,其他的操作只需要从移位寄存器获取资源句柄就可以执行了,不需要反复的对资源开启关闭。
为了让资源操作vi在不同线程运行时不会引起对资源的操作冲突,将vi的属性设置为非重入执行。非重入执行表示本vi在内存中只有一个副本,每当线程需要调用资源操作vi时,都是运行这一个副本,假如vi已经被调用执行,那么系统自动挂起别的调用方,直到当前操作运行结束,系统按顺序让vi执行下一个操作。这样通过系统自己的互锁,既避免了对资源的冲突,还简化了编写程序的复杂度,避免一些不必要的错误。
如果将资源操作vi集成到线程流程中的话,资源的操作的耗时依旧会累计到线程的执行上。当然如果线程本身就需要等待资源操作完成才能进行下一步,那这样的耗时累计是必须的,也是允许的,但是如果存在一些不需要等待资源操作完成就可以进行下一步的情况,那么需要加个队列,如图2所示。队列作为一个消息的消费者,是一个单独的子线程,那么当主线程产生一个队列消息后,队列消费者vi就可以执行指定的操作,而主线程在发送完队列消息后可以立即进行下一步操作,这样资源的操作可以做到与主线程相互独立开,不会影响到主线程。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明主要技术方案的精神实质所做的修饰,都应涵盖在本发明的保护范围之内。
Claims (3)
1.一种指定软硬件资源的集中式LabVIEW处理方法,其特征在于,资源操作vi的结构是用while循环加一个条件结构组成,while循环停止条件设置为常亮true,每次调用这个vi只循环一次;
枚举型控件操作项包含所有对资源的操作,通过条件结构分支一一对应每一个操作;打开资源后产生的资源句柄通过while循环的移位寄存器记录在内存中,资源一直处于打开状态并记录在移位寄存器中,其他操作从移位寄存器获取资源句柄执行。
2.根据权利要求1所述的指定软硬件资源的集中式LabVIEW处理方法,其特征在于,为了让资源操作vi在不同线程运行时不会引起对资源的操作冲突,将让资源操作vi的属性设置为非重入执行;非重入执行表示本vi在内存中只有一个副本,每当线程需要调用资源操作vi时,都是运行这一个副本,假如vi已经被调用执行,那么系统自动挂起别的调用方,直到当前操作运行结束,系统按顺序让vi执行下一个操作。
3.根据权利要求2所述的指定软硬件资源的集中式LabVIEW处理方法,其特征在于,如果存在不需要等待资源操作完成就可以进行下一步的情况,那么需要加个队列:队列作为一个消息的消费者,是一个单独的子线程;当主线程产生一个队列消息后,队列消费者vi就执行指定的操作,而主线程在发送完队列消息后立即进行下一步操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111272273.8A CN113986546A (zh) | 2021-10-29 | 2021-10-29 | 一种指定软硬件资源的集中式LabVIEW处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111272273.8A CN113986546A (zh) | 2021-10-29 | 2021-10-29 | 一种指定软硬件资源的集中式LabVIEW处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986546A true CN113986546A (zh) | 2022-01-28 |
Family
ID=79744423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111272273.8A Pending CN113986546A (zh) | 2021-10-29 | 2021-10-29 | 一种指定软硬件资源的集中式LabVIEW处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986546A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968414A (zh) * | 2022-06-21 | 2022-08-30 | 杭州海康威视系统技术有限公司 | 资源上图方法、装置、设备及存储介质 |
-
2021
- 2021-10-29 CN CN202111272273.8A patent/CN113986546A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968414A (zh) * | 2022-06-21 | 2022-08-30 | 杭州海康威视系统技术有限公司 | 资源上图方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9916136B2 (en) | Interface infrastructure for a continuation based runtime | |
US7917900B2 (en) | Enabling analysis of software source code | |
US8589925B2 (en) | Techniques for switching threads within routines | |
US8849753B2 (en) | Automating asynchronous programming in single threaded systems | |
CN101446918B (zh) | 一种实现用户态调试器调试单个函数的方法及系统 | |
US20130297282A1 (en) | Dynamically Adjusting Speed Versus Accuracy of Computer Platform Simulation | |
US20110072309A1 (en) | Debugger for Multicore System | |
CN104461876B (zh) | 一种基于运行快照序列的并行程序重现调试方法 | |
KR20080106561A (ko) | 실세계 프로세스들을 모델링하기 위한 방법 및 시스템과 컴퓨터 판독가능 매체 | |
JPH0535453B2 (zh) | ||
KR20080112253A (ko) | 제어 플로우 패턴들의 창설 방법, 연속부 모델링 시스템 및컴퓨터 판독가능 매체 | |
US8271768B2 (en) | Concurrent handling of exceptions in received aggregate exception structure with supplied exception handlers and marking handled exceptions | |
JPH0535454B2 (zh) | ||
CN113986546A (zh) | 一种指定软硬件资源的集中式LabVIEW处理方法 | |
US20080320275A1 (en) | Concurrent exception handling | |
CN112948136A (zh) | 一种嵌入式操作系统异步日志记录的实现方法 | |
US10198784B2 (en) | Capturing commands in a multi-engine graphics processing unit | |
CN110289043B (zh) | 存储设备测试方法、装置、电子设备 | |
CN111506395B (zh) | 一种混合仿真的全数字虚拟运行环境的实现方法及装置 | |
US7043565B1 (en) | System and method for transferring data over an external transmission medium | |
US8695000B1 (en) | Data transfer protection in a multi-tasking modeling environment having a protection mechanism selected by user via user interface | |
JP2013522710A (ja) | Itシステムの構成方法、そのコンピュータプログラムおよびitシステム | |
US6311227B1 (en) | Procedure calling method | |
JP2010536101A (ja) | Sip及びsdpプロトコルのユーザーカスタマイズ用コルーチンインターフェース | |
CN114443775A (zh) | 一种自适应的数据同步系统、控制方法及应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |