CN113360280B - 基于多线程运行、动态全局变量处理的仿真曲线显示方法 - Google Patents
基于多线程运行、动态全局变量处理的仿真曲线显示方法 Download PDFInfo
- Publication number
- CN113360280B CN113360280B CN202110612081.0A CN202110612081A CN113360280B CN 113360280 B CN113360280 B CN 113360280B CN 202110612081 A CN202110612081 A CN 202110612081A CN 113360280 B CN113360280 B CN 113360280B
- Authority
- CN
- China
- Prior art keywords
- data
- global variable
- thread
- simulation
- lock
- 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.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 46
- 238000012545 processing Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000007717 exclusion Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000013079 data visualisation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了基于多线程运行、动态全局变量处理的仿真曲线显示方法,在仿真程序中,分别创建负责显示图像或曲线的主线程、用于数据处理的子线程;主线程和子线程并行执行异步同时:仿真运行开始后,子线程按照仿真要求进行数据运算,获取锁并将运算得到的数据结果写入动态全局变量,然后释放锁;主线程启动定时器并定时刷新显示界面,当刷新界面时先获取锁,然后将动态全局变量的数据拷贝至临时变量,再清空全局变量数据并释放锁,动态全局变量等待被写入;主线程使用临时变量中的数据对显示界面刷新。本发明采用“多线程+动态全局变量”的方式对曲线显示进行优化改进,能够在提高仿真效率的同时减少内存使用,兼顾时间效率与空间效率。
Description
技术领域
本发明属于技术领域,涉及一种基于多线程运行、动态全局变量处理的仿真曲线显示方法。
背景技术
随着计算机应用的日益深入和生产过程自动化程度的不断提供,越来越多的监控和仿真系统提出了实时数据动态图形显示的需求,"视算"(Visual Computing)的一个重要部分--数据可视化(DataVisualization),例如在系统仿真领域,需要对仿真产生的数据进行曲线绘制,来分析各个模型仿真过程的状态变化。
目前支持曲线绘制,图形显示的计算机语言很多,例如VB,C#,JAVA,QT等。Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler,moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。QT底层使用C/C++编写,可以很好的调用C/C++相关的接口同时支持跨平台。
在计算机仿真过程中,需要对计算结果数据进行后处理以便工程分析和观察,通常包括曲线图、柱状图、散点图、云图、等不同种类的图形绘制。目前QT实现曲线动态显示的主要技术是信号槽机制,使用信号槽方式可以解决数据量小,性能要求不是很高的场景;但是对于数据量大,性能要求比较高的场景,这种方式比较耗时。为解决这一问题,传统的解决方案是引入“多线程”机制,将“仿真计算”和“图形实时绘制”两部分分别按照不同的线程进行处理,以提高运行效率。然而,对于数据量更大、性能要求更高的场景,这种处理方式显然无法满足要求。
目前实现曲线动态显示的主要技术是信号槽机制。效率要求高的一般采用“多线程+信号槽”。使用“多线程+信号槽”方式可以解决数据量小,性能要求不是很高的场景。对于数据量很大,且性能要求比较高的场景,这种方式的处理效率就明显不足。因为后台每仿真完成一次就调用信号和槽刷新界面,这样频繁的刷新界面比较耗时。例如:当仿真时长100s,通讯步长0.01秒,每通讯一次界面就要刷新一次,整个运行完要刷新界面10000次,仅仅采用“多线程”的处理方式明显不足以保证较高的运行效率。
发明内容
为进一步提高运算效率,本发明提出基于多线程运行、动态全局变量处理的仿真曲线显示方法,采用“多线程+动态全局变量”的方式对曲线显示进行优化改进,能够在提高仿真效率的同时减少内存使用,兼顾时间效率与空间效率。
本发明是通过以下技术方案来实现:
基于多线程运行、动态全局变量处理的仿真曲线显示方法,包括以下操作:
在仿真程序中,分别创建负责显示图像或曲线的主线程、用于数据处理的子线程;主线程和子线程并行执行异步同时:
仿真运行开始后,子线程按照仿真要求进行数据运算,获取锁并将运算得到的数据结果写入动态全局变量,然后释放锁;
主线程启动定时器并定时刷新显示界面,当刷新界面时先获取锁,然后将动态全局变量的数据拷贝至临时变量,再清空全局变量数据并释放锁,动态全局变量等待被写入;主线程使用临时变量中的数据对显示界面刷新;
当动态全局变量中没有数据、全局变量和临时变量中的数据都刷新完,仿真运行结束。
所述的主线程和子线程采用QList容器进行存放数据,采用QMutex进行数据同步。
所述的动态全局变量的写入、清空为:
子线程运行产生的数据写入QList中,主线程在定时器到达后将QList中的数据存放至临时内存中进行使用,同时清空全局变量中的数据,以供子线程写入新的运算数据。
所述的锁为互斥锁,保证同一时刻只能一个线程进行操作动态全局变量。
与现有技术相比,本发明具有以下有益的技术效果:
本发明的方法,采用“多线程+动态全局变量”的方式对曲线显示进行优化改进;采用多线程可以有效的利用CPU提高运行效率,减少了程序运行的时间;使用动态全局变量方式代替固定的将所有数据存放至内存方式,来减少内存的使用;与将所有数据放入内存方式比,本方法采用动态全局变量方式,只是临时存储一个定时器时间段的数据,大大的减少了内存的使用;与采用信号槽方式比,本方法提高了运行效率;
本发明的方法,还使用互斥锁来控制对动态全局变量的操作;再使用临时变量来存储临时数据来减少互斥锁的锁定时间。因为拷贝数据到临时变量的时间远远小于将数据加载到图像处理线程中,图像处理线程使用自己的临时变量数据不占用互斥锁,这样数据处理线程就可以很快获取到互斥锁,进而提高了仿真效率。
附图说明
图1为本发明的动态全局变量管理;
图2为“多线程+动态全局变量”实现过程示意图;
图3为本发明运行过程曲线绘制;
图4为信号槽方式过程曲线绘制;
图5为传统信号槽方式计算效率(左)与本发明计算效率(右)对比示意图。
具体实施方式
下面结合附图对本发明做进一步详细描述,所述是对本发明的解释而不是限定。
对于数据量大且性能要求比较高的仿真场景,使用传统的信号槽机制效率较低。为提高仿真效率同时保证曲线动态显示准确,本发明提出了性能优化的方案,即“多线程+动态全局变量”方法,能够在提高仿真效率的同时减少内存使用,兼顾时间效率与空间效率。
参见图1、图2,本发明提供的基于多线程运行、动态全局变量处理的仿真曲线显示方法,包括以下操作:
在仿真程序中,分别创建负责显示图像或曲线的主线程、用于数据处理的子线程;主线程和子线程并行执行异步同时:
仿真运行开始后,子线程按照仿真要求进行数据运算,获取锁并将运算得到的数据结果写入动态全局变量,然后释放锁;
主线程启动定时器并定时刷新显示界面,当刷新界面时先获取锁,然后将动态全局变量的数据拷贝至临时变量,再清空全局变量数据并释放锁,动态全局变量等待被写入;主线程使用临时变量中的数据对显示界面刷新;
当动态全局变量中没有数据、全局变量和临时变量中的数据都刷新完,仿真运行结束。
本发明方案的核心主要包含两部分:多线程和动态全局变量管理。
一方面,仿真中使用多线程方式运行,主线程负责显示图像或者曲线,子线程负责处理数据。这样做的目的是为了将耗时时间较长的数据处理放在后台运行,这样就不会导致数据处理过程中界面卡死,界面刷新和后台运行可以异步同时并行执行。如果数据处理和界面刷新都放在一个线程执行会导致数据处理时间过长情况下,界面卡死;
另一方面,采用动态全局变量,动态全局变量的管理如示意图1所示。动态全局变量采用QList容器进行存放数据,采用QMutex进行数据同步,后台进程运行产生的数据写入QList中,前台界面刷新定时器到达后将QList中的数据存放至临时内存中进行使用,同时清空全局变量中的数据。这样做首先避免将所有数据存放至内存导致占用内存过大带来性能和效率的下降;其次动态全局变量采用QList存放、QMutex进行同步,同步过程不是一直将数据占用使用完成后才进行释放,而是将要同步的数据复制到临时变量后就进行释放,这样做的目的是因为内存拷贝耗时远远小于将每条数据的绘图时间,尽可能减少锁的占用时间来提高运行效率。
具体的,以模型总线软件为例:
仿真运行开始后,创建用于数据处理的子线程、主线程负责显示图像或者曲线。当开始运行时,数据处理线程进行数据运算,后台数据处理线程接受到各个模型的仿真数据后,获取互斥锁将仿真数据写入动态全局变量后释放互斥锁;
界面曲线刷新线程启动定时器定时的刷新界面,界面显示线程定时器到达后获取互斥锁将全局变量中的数据拷贝至临时变量中并清空全局变量中的数据,然后释放互斥锁,最后加载临时变量中的数据到曲线中;
运行结束后,界面定时器停止的条件是全局变量和临时变量中的数据都刷新完。
下面给出具体的实施例。
在仿真计算过程中,实时检测数据并进行绘制曲线是仿真软件较为常见,特别是在多工具分布式集成仿真中,此时服务器端要转发所有客户端的数据,如果将所有数据放入内存中,将需要很高的内存,界面同时绘制多条曲线特别耗时。
利用模型总线作为服务器,挂接两个SimulationX(一款国外的系统仿真商业工具)作为客户端,进行两个客户端的分布式集成仿真,服务器端使用信号与槽方式和本优化法案进行仿真对比。
仿真参数:仿真时长:100S,通讯步长:0.01S,两个客户端均为两个输入和两个输出,分别如图3、图4所示。可以看出两种方式绘制曲线的效果一样,没有任何差异。
图5所示为常规信号和槽方式模型求解效率(仿真100s耗时约35.43s)与“多线程+动态全局变量”方式的模型运算效率(仿真100s,耗时6.45s)的对比,两次计算采用同样的仿真时长与通讯步长,绘制相同数量的曲线。可以看出本发明的求解效率更高。
以上给出的实施例是实现本发明较优的例子,本发明不限于上述实施例。本领域的技术人员根据本发明技术方案的技术特征所做出的任何非本质的添加、替换,均属于本发明的保护范围。
Claims (2)
1.一种基于多线程运行、动态全局变量处理的仿真曲线显示方法,其特征在于,包括以下操作:
在仿真程序中,分别创建负责显示图像或曲线的主线程、用于数据处理的子线程;主线程和子线程并行执行异步同时:
仿真运行开始后,子线程按照仿真要求进行数据运算,获取锁并将运算得到的数据结果写入动态全局变量,然后释放锁;
主线程启动定时器并定时刷新显示界面,当刷新界面时先获取锁,然后将动态全局变量的数据拷贝至临时变量,再清空全局变量数据并释放锁,动态全局变量等待被写入;主线程使用临时变量中的数据对显示界面刷新;
当动态全局变量中没有数据、全局变量和临时变量中的数据都刷新完,仿真运行结束;
所述的主线程和子线程采用QList容器进行存放数据,采用QMutex进行数据同步;
所述的锁为互斥锁,保证同一时刻只能一个线程进行操作动态全局变量。
2.如权利要求1所述的基于多线程运行、动态全局变量处理的仿真曲线显示方法,其特征在于,所述的动态全局变量的写入、清空为:
子线程运行产生的数据写入QList中,主线程在定时器到达后将QList中的数据存放至临时内存中进行使用,同时清空全局变量中的数据,以供子线程写入新的运算数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110612081.0A CN113360280B (zh) | 2021-06-02 | 2021-06-02 | 基于多线程运行、动态全局变量处理的仿真曲线显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110612081.0A CN113360280B (zh) | 2021-06-02 | 2021-06-02 | 基于多线程运行、动态全局变量处理的仿真曲线显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360280A CN113360280A (zh) | 2021-09-07 |
CN113360280B true CN113360280B (zh) | 2023-11-28 |
Family
ID=77531145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110612081.0A Active CN113360280B (zh) | 2021-06-02 | 2021-06-02 | 基于多线程运行、动态全局变量处理的仿真曲线显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360280B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115272524B (zh) * | 2022-09-23 | 2023-01-03 | 安徽华云安科技有限公司 | 多曲线并行绘制方法、装置、设备以及存储介质 |
CN116974222B (zh) * | 2023-06-25 | 2024-08-06 | 上海同星智能科技有限公司 | 汽车标定信号自动化读写方法及汽车标定系统 |
CN117078501B (zh) * | 2023-10-17 | 2023-12-29 | 中科星图深海科技有限公司 | 一种提高海洋环境数据二维成像效率的方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049630A (ja) * | 2008-08-25 | 2010-03-04 | Fujitsu Ltd | シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法 |
CN101777007A (zh) * | 2010-01-28 | 2010-07-14 | 中国科学技术大学苏州研究院 | 片上多核处理器的并行功能仿真系统及其方法 |
CN103049305A (zh) * | 2012-08-03 | 2013-04-17 | 北京航空航天大学 | 针对龙芯多核cpu模拟的动态代码转换的多线程化方法 |
CN103345422A (zh) * | 2013-07-02 | 2013-10-09 | 厦门雅迅网络股份有限公司 | 一种基于Linux的多线程硬实时控制方法 |
CN104734915A (zh) * | 2015-03-05 | 2015-06-24 | 重庆邮电大学 | 一种复合多进程多线程的多网络并发动态仿真方法 |
CN106407579A (zh) * | 2016-09-27 | 2017-02-15 | 南京国电南自轨道交通工程有限公司 | 一种电力监控仿真系统中场景设计方法 |
CN106959900A (zh) * | 2017-03-22 | 2017-07-18 | 飞天诚信科技股份有限公司 | 一种防止多线程死锁的方法及装置 |
CN111381980A (zh) * | 2020-02-12 | 2020-07-07 | 上海机电工程研究所 | 用于混合仿真的互联系统、方法 |
CN112596877A (zh) * | 2020-12-18 | 2021-04-02 | 深圳Tcl新技术有限公司 | 全局变量的使用方法、装置、系统以及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040128489A1 (en) * | 2002-12-31 | 2004-07-01 | Hong Wang | Transformation of single-threaded code to speculative precomputation enabled code |
US20090125882A1 (en) * | 2007-10-08 | 2009-05-14 | Matteo Frigo | Method of implementing hyperobjects in a parallel processing software programming environment |
US10528479B2 (en) * | 2017-06-02 | 2020-01-07 | Huawei Technologies Co., Ltd. | Global variable migration via virtual memory overlay technique for multi-version asynchronous dynamic software update |
-
2021
- 2021-06-02 CN CN202110612081.0A patent/CN113360280B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049630A (ja) * | 2008-08-25 | 2010-03-04 | Fujitsu Ltd | シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法 |
CN101777007A (zh) * | 2010-01-28 | 2010-07-14 | 中国科学技术大学苏州研究院 | 片上多核处理器的并行功能仿真系统及其方法 |
CN103049305A (zh) * | 2012-08-03 | 2013-04-17 | 北京航空航天大学 | 针对龙芯多核cpu模拟的动态代码转换的多线程化方法 |
CN103345422A (zh) * | 2013-07-02 | 2013-10-09 | 厦门雅迅网络股份有限公司 | 一种基于Linux的多线程硬实时控制方法 |
CN104734915A (zh) * | 2015-03-05 | 2015-06-24 | 重庆邮电大学 | 一种复合多进程多线程的多网络并发动态仿真方法 |
CN106407579A (zh) * | 2016-09-27 | 2017-02-15 | 南京国电南自轨道交通工程有限公司 | 一种电力监控仿真系统中场景设计方法 |
CN106959900A (zh) * | 2017-03-22 | 2017-07-18 | 飞天诚信科技股份有限公司 | 一种防止多线程死锁的方法及装置 |
CN111381980A (zh) * | 2020-02-12 | 2020-07-07 | 上海机电工程研究所 | 用于混合仿真的互联系统、方法 |
CN112596877A (zh) * | 2020-12-18 | 2021-04-02 | 深圳Tcl新技术有限公司 | 全局变量的使用方法、装置、系统以及计算机可读存储介质 |
Non-Patent Citations (3)
Title |
---|
Advance Thread Synchronization for Multithreaded MPI Implementations;Hoang-Vu Dang, etal.;《2017 17th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing(CCGRID) 》;全文 * |
基于CSP的多线程自动建模及死锁检测研究;高飞 等;《现代电子技术》;第42卷(第12期);全文 * |
水下机器人自主控制系统的设计与实现;王奎民;秦政;边信黔;;系统仿真学报(14);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113360280A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113360280B (zh) | 基于多线程运行、动态全局变量处理的仿真曲线显示方法 | |
US8607249B2 (en) | System and method for efficient concurrent queue implementation | |
CN106997610B (zh) | 一种图像渲染方法、装置及电子设备 | |
EP3111318B1 (en) | Cross-platform rendering engine | |
US8661449B2 (en) | Transactional computation on clusters | |
EP2972841B1 (en) | Visualizing recorded executions of multi-threaded software programs for performance and correctness | |
US7170511B2 (en) | Creating a parallel structure for scene-based rendering | |
US20140253561A1 (en) | Method for processing a computer-animated scene and corresponding device | |
KR20060006990A (ko) | 애니메이션 오브젝트 인스턴스를 통한 그래픽 표시 요소의애니메이션을 지원하는 시스템 | |
US20140347371A1 (en) | Graphics processing using dynamic resources | |
CN110554976A (zh) | 用于图形处理的存储器高速缓存管理 | |
CN112527452A (zh) | 跨OpenStack的虚拟机迁移方法、装置及介质 | |
US10628909B2 (en) | Graphics processing unit resource dependency viewer | |
CN114237916B (zh) | 一种数据处理方法及相关设备 | |
US10198784B2 (en) | Capturing commands in a multi-engine graphics processing unit | |
CN103729166A (zh) | 程序的线程关系确定方法、设备及系统 | |
CN109656868A (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
CN115983047B (zh) | 一种适用于多图形接口的跨平台的仿真系统 | |
CN117573255A (zh) | 一种用于图形化应用的界面刷新方法、装置及介质 | |
CN113838180A (zh) | 一种渲染指令处理方法及其相关设备 | |
US20130063482A1 (en) | Application programming interface for a bitmap composition engine | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
EP2715564A2 (en) | Mesh sequence file format | |
CN111459486A (zh) | 一种基于网页画布的图形拖动优化方法 | |
CN114328769A (zh) | 基于WebGL的北斗网格绘制方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |