CN113312388A - 一种多线程且安全的数据库存储框架的构建方法 - Google Patents
一种多线程且安全的数据库存储框架的构建方法 Download PDFInfo
- Publication number
- CN113312388A CN113312388A CN202110591059.2A CN202110591059A CN113312388A CN 113312388 A CN113312388 A CN 113312388A CN 202110591059 A CN202110591059 A CN 202110591059A CN 113312388 A CN113312388 A CN 113312388A
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- database
- database storage
- network
- 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
- 238000010276 construction Methods 0.000 title abstract description 4
- 238000004806 packaging method and process Methods 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 19
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 3
- 230000003631 expected effect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 10
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种多线程且安全的数据库存储框架的构建方法,本发明通过初始化界面并创建网络线程和数据库存储线程;使用网络线程接收以太网数据,将数据解析为可用数据并封装为标准的数据库执行语句,同时每封装一个数据库语句网络线程就发射出一个信号;数据库存储线程捕获网络信号后,将数据库语句插入FIFO队列中;最后通过应用信号量同步机制读取数据库语句并批量执行,保证了线程间数据的正确性和可靠性。本发明能够在CPU利用率和内存占用率都较低的前提条件下,达到预期效果,能够解决界面卡顿或数据库存储网络数据丢数的问题。
Description
技术领域
本发明属于计算机应用技术领域,尤其是一种多线程且安全的数据库存储框架的构建方法。
背景技术
在装备显控软件中,其中一项重要功能是通过以太网上接收各传感器的数据及状态信息,同时存储到本地数据库中,并通过人机交互界面向用户提供数据查询功能。但由于其他传感器类型较多、接口协议规定的报文短而多、数据存储速度有限,导致在显控软件中,界面切换卡顿或出现数据丢数的问题。
发明内容
本发明的目的在于克服现有技术的不足,提出一种多线程且安全的数据库存储框架的构建方法,提供了多线程并且线程安全的数据库存储框架,最终较好地实现装备存储数据功能需求。
本发明解决其技术问题是采取以下技术方案实现的:
一种多线程且安全的数据库存储框架的构建方法,其特征在于:包括以下步骤:
步骤1、初始化界面,并创建网络线程和数据库存储线程;
步骤2、通过网络线程接收以太网数据,将数据解析为可用数据并封装为标准的数据库执行语句,同时每封装一个数据库语句网络线程就发射出一个信号;
步骤3、数据库存储线程捕获网络信号后,将数据库语句插入FIFO队列中;
步骤4、通过应用信号量同步机制读取数据库语句并批量执行,确保线程间数据的正确性和可靠性。
而且,所述步骤2包括以下步骤:
步骤2.1、通过网络线程接收以太网数据,并判断网络线程是否接受到以太网数据,若接收到以太网数据,则进行步骤2.2,否则返回步骤2.1;
步骤2.2、网络线程将接受到的以太网数据解析到结构体对象中同时解析为可用数据;
步骤2.3、将可用数据封装为标准的数据库执行语句;
步骤2.4、每封装一个数据库语句,网络线程就发射出一个sql信号。
而且,所述步骤3包括以下步骤:
步骤3.1、判断数据库存储线程是否接收到网络线程发射出的sql信号,若接收到信号,则进行步骤3.2,否则返回步骤3.1;
步骤3.2、数据库存储线程将数据库执行语句插入FIFO队列。
而且,所述步骤3中FIFO队列用于线程异步通信。
而且,所述FIFO队列的具体实现方法包括:
⑴、判断FIFO队列数据是否已满,若FIFO队列数据已满,则数据库存储线程取出队列中的全部数据执行,并释放同步信号量,否则返回步骤3;
⑵、判断数据库存储线程获取信号量等待是否超时1s,若超过,则主动询问FIFO队列中是否为空,若队列不为空,则数据库存储线程取出队列中全部数据执行,并释放同步信号量;若队列中为空,则数据库存储线程进入下一个1s信号量获取等待周期,若不超过,则数据库存储线程进入下一个1s信号量获取等待周期。
而且,所述步骤4中信号量同步机制为:若不能使用资源,则进入阻塞状态,函数acquire(n)用于获取第n个资源的参数,函数release(n)释放第n个资源,函数tryAcquire(n)尝试获得第n个资源。
本发明的优点和积极效果是:
本发明通过初始化界面并创建网络线程和数据库存储线程;使用网络线程接收以太网数据,将数据解析为可用数据并封装为标准的数据库执行语句,同时每封装一个数据库语句网络线程就发射出一个信号;数据库存储线程捕获网络信号后,将数据库语句插入FIFO队列中;最后通过应用信号量同步机制读取数据库语句并批量执行,保证了线程间数据的正确性和可靠性。本发明能够在CPU利用率和内存占用率都较低的前提条件下,达到预期效果,能够解决界面卡顿或数据库存储网络数据丢数的问题。
附图说明
图1为本发明创建网络线程和数据库存储线程的流程图;
图2为本发明FIFO队列应用流程图。
具体实施方式
以下结合附图对本发明做进一步详述。
一种多线程且安全的数据库存储框架的构建方法,如图1所示,包括以下步骤:
步骤1、初始化界面,并创建网络线程和数据库存储线程。
步骤2、通过网络线程接收以太网数据,将数据解析为可用数据并封装为标准的数据库执行语句,同时每封装一个数据库语句网络线程就发射出一个信号。
步骤2.1、通过网络线程接收以太网数据,并判断网络线程是否接受到以太网数据,若接收到以太网数据,则进行步骤2.2,否则返回步骤2.1;
步骤2.2、网络线程将接受到的以太网数据解析到结构体对象中同时解析为可用数据;
步骤2.3、将可用数据封装为标准的数据库执行语句;
步骤2.4、每封装一个数据库语句,网络线程就发射出一个sql信号。
步骤3、数据库存储线程捕获网络信号后,将数据库语句插入FIFO队列中。
步骤3.1、判断数据库存储线程是否接收到网络线程发射出的sql信号,若接收到信号,则进行步骤3.2,否则返回步骤3.1;
步骤3.2、数据库存储线程将数据库执行语句插入FIFO队列。
其中,FIFO是First Input First Output的缩写,即先进先出队列。本发明中FIFO队列用于线程异步通信,如图2所示,FIFO队列的具体实现方法包括:
⑴、判断FIFO队列数据是否已满,若FIFO队列数据已满,则数据库存储线程取出队列中的全部数据执行,并释放同步信号量,否则返回步骤3;
⑵、判断数据库存储线程获取信号量等待是否超时1s,若超过,则主动询问FIFO队列中是否为空,若队列不为空,则数据库存储线程取出队列中全部数据执行,并释放同步信号量;若队列中为空,则数据库存储线程进入下一个1s信号量获取等待周期,若不超过,则数据库存储线程进入下一个1s信号量获取等待周期。
步骤4、通过应用信号量同步机制读取数据库语句并批量执行,确保线程间数据的正确性和可靠性。
Qt提供QThread类以进行多任务处理。QThread继承自QObject类,且提供QMutex、QSemaphore等类以实现同步。QSemaphore类提供了函数acquire()和release()支持信号量的运算。其中信号量同步机制为:若不能使用资源,则进入阻塞状态,函数acquire(n)用于获取第n个资源的参数,函数release(n)释放第n个资源,函数tryAcquire(n)尝试获得第n个资源。
根据上述一种多线程且安全的数据库存储框架的构建方法,在CentOS系统中,以QtCreator为开发环境进行了软件仿真实验,成功实现了一种多线程且安全的数据框架,并且降低了CPU使用率,增强了数据库的存储性能,提高了数据库存储的正确性,更加优化满足装备软件的应用需求。
需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。
Claims (6)
1.一种多线程且安全的数据库存储框架的构建方法,其特征在于:包括以下步骤:
步骤1、初始化界面,并创建网络线程和数据库存储线程;
步骤2、通过网络线程接收以太网数据,将数据解析为可用数据并封装为标准的数据库执行语句,同时每封装一个数据库语句网络线程就发射出一个信号;
步骤3、数据库存储线程捕获网络信号后,将数据库语句插入FIFO队列中;
步骤4、通过应用信号量同步机制读取数据库语句并批量执行,确保线程间数据的正确性和可靠性。
2.根据权利要求1所述的一种多线程且安全的数据库存储框架的构建方法,其特征在于:所述步骤2包括以下步骤:
步骤2.1、通过网络线程接收以太网数据,并判断网络线程是否接受到以太网数据,若接收到以太网数据,则进行步骤2.2,否则返回步骤2.1;
步骤2.2、网络线程将接受到的以太网数据解析到结构体对象中同时解析为可用数据;
步骤2.3、将可用数据封装为标准的数据库执行语句;
步骤2.4、每封装一个数据库语句,网络线程就发射出一个sql信号。
3.根据权利要求1所述的一种多线程且安全的数据库存储框架的构建方法,其特征在于:所述步骤3包括以下步骤:
步骤3.1、判断数据库存储线程是否接收到网络线程发射出的sql信号,若接收到信号,则进行步骤3.2,否则返回步骤3.1;
步骤3.2、数据库存储线程将数据库执行语句插入FIFO队列。
4.根据权利要求1所述的一种多线程且安全的数据库存储框架的构建方法,其特征在于:所述步骤3中FIFO队列用于线程异步通信。
5.根据权利要求1所述的一种多线程且安全的数据库存储框架的构建方法,其特征在于:所述FIFO队列的具体实现方法包括:
⑴、判断FIFO队列数据是否已满,若FIFO队列数据已满,则数据库存储线程取出队列中的全部数据执行,并释放同步信号量,否则返回步骤3;
⑵、判断数据库存储线程获取信号量等待是否超时1s,若超过,则主动询问FIFO队列中是否为空,若队列不为空,则数据库存储线程取出队列中全部数据执行,并释放同步信号量;若队列中为空,则数据库存储线程进入下一个1s信号量获取等待周期,若不超过,则数据库存储线程进入下一个1s信号量获取等待周期。
6.根据权利要求1所述的一种多线程且安全的数据库存储框架的构建方法,其特征在于:所述步骤4中信号量同步机制为:若不能使用资源,则进入阻塞状态,函数acquire(n)用于获取第n个资源的参数,函数release(n)释放第n个资源,函数tryAcquire(n)尝试获得第n个资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110591059.2A CN113312388A (zh) | 2021-05-28 | 2021-05-28 | 一种多线程且安全的数据库存储框架的构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110591059.2A CN113312388A (zh) | 2021-05-28 | 2021-05-28 | 一种多线程且安全的数据库存储框架的构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113312388A true CN113312388A (zh) | 2021-08-27 |
Family
ID=77376100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110591059.2A Pending CN113312388A (zh) | 2021-05-28 | 2021-05-28 | 一种多线程且安全的数据库存储框架的构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312388A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010034753A1 (en) * | 2000-03-23 | 2001-10-25 | International Business Machines Corporation | Priority resource allocation in programming environments |
US20100115196A1 (en) * | 2007-06-01 | 2010-05-06 | Sonics, Inc. | Shared storage for multi-threaded ordered queues in an interconnect |
CN103514261A (zh) * | 2013-08-13 | 2014-01-15 | 江苏华大天益电力科技有限公司 | 一种应用于工业控制系统的数据异步存储及访问机制 |
CN103577551A (zh) * | 2013-10-16 | 2014-02-12 | 青岛海信传媒网络技术有限公司 | 一种数据批量提交到数据库的方法和装置 |
CN106844589A (zh) * | 2017-01-10 | 2017-06-13 | 深圳市爱立峰科技有限公司 | 数据库数据异步存储方法和系统 |
CN110121704A (zh) * | 2016-12-30 | 2019-08-13 | 华为技术有限公司 | 一种用于存储过程的执行方法、设备以及系统 |
CN110134500A (zh) * | 2019-04-15 | 2019-08-16 | 平安普惠企业管理有限公司 | 基于多线程的数据同步方法、装置、设备和存储介质 |
CN110445730A (zh) * | 2019-09-18 | 2019-11-12 | 中国科学院微电子研究所 | 基于WinPcap的网络数据实时采集存储方法和装置 |
US10635503B1 (en) * | 2018-01-31 | 2020-04-28 | EMC IP Holding Company LLC | Systems and methods for semaphore synchronization |
CN112269835A (zh) * | 2020-11-10 | 2021-01-26 | 浪潮云信息技术股份公司 | 一种分布式数据库异步读取并处理批量数据的方法 |
CN112699150A (zh) * | 2021-01-04 | 2021-04-23 | 中国银联股份有限公司 | 一种数据库操作框架、方法及系统 |
-
2021
- 2021-05-28 CN CN202110591059.2A patent/CN113312388A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010034753A1 (en) * | 2000-03-23 | 2001-10-25 | International Business Machines Corporation | Priority resource allocation in programming environments |
US20100115196A1 (en) * | 2007-06-01 | 2010-05-06 | Sonics, Inc. | Shared storage for multi-threaded ordered queues in an interconnect |
CN103514261A (zh) * | 2013-08-13 | 2014-01-15 | 江苏华大天益电力科技有限公司 | 一种应用于工业控制系统的数据异步存储及访问机制 |
CN103577551A (zh) * | 2013-10-16 | 2014-02-12 | 青岛海信传媒网络技术有限公司 | 一种数据批量提交到数据库的方法和装置 |
CN110121704A (zh) * | 2016-12-30 | 2019-08-13 | 华为技术有限公司 | 一种用于存储过程的执行方法、设备以及系统 |
CN106844589A (zh) * | 2017-01-10 | 2017-06-13 | 深圳市爱立峰科技有限公司 | 数据库数据异步存储方法和系统 |
US10635503B1 (en) * | 2018-01-31 | 2020-04-28 | EMC IP Holding Company LLC | Systems and methods for semaphore synchronization |
CN110134500A (zh) * | 2019-04-15 | 2019-08-16 | 平安普惠企业管理有限公司 | 基于多线程的数据同步方法、装置、设备和存储介质 |
CN110445730A (zh) * | 2019-09-18 | 2019-11-12 | 中国科学院微电子研究所 | 基于WinPcap的网络数据实时采集存储方法和装置 |
CN112269835A (zh) * | 2020-11-10 | 2021-01-26 | 浪潮云信息技术股份公司 | 一种分布式数据库异步读取并处理批量数据的方法 |
CN112699150A (zh) * | 2021-01-04 | 2021-04-23 | 中国银联股份有限公司 | 一种数据库操作框架、方法及系统 |
Non-Patent Citations (2)
Title |
---|
王奇等, 北京航空航天大学出版社 * |
苏磊: "物联网环境下的智能化仓库信息系统设计", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7689998B1 (en) | Systems and methods that manage processing resources | |
US6167423A (en) | Concurrency control of state machines in a computer system using cliques | |
US8166483B2 (en) | Method and apparatus for implementing priority management of computer operations | |
CN111767159A (zh) | 一种基于协程的异步系统调用系统 | |
CN107463357B (zh) | 任务调度系统、调度方法、制动仿真系统及仿真方法 | |
CN105446934B (zh) | 一种基于多核dsp的动目标及恒虚警检测系统 | |
CN103559045A (zh) | 一种硬件实时操作系统 | |
CN111488290B (zh) | 基于智能电表操作系统的线程测试方法和装置 | |
CN113179227B (zh) | 基于队列的at指令控制方法 | |
Graillat et al. | Parallel code generation of synchronous programs for a many-core architecture | |
Fu et al. | Development of RTOS-based wireless SHM system: Benefits in applications | |
CN113312388A (zh) | 一种多线程且安全的数据库存储框架的构建方法 | |
CN111400073B (zh) | 基于汽车开放架构系统到统一软硬件表示的形式化系统模型转换和可靠性分析方法 | |
CN116482725B (zh) | 一种开放式卫星导航基带信号处理方法、装置及接收机 | |
Peguero et al. | Assessing jitter in sensor time series from android mobile devices | |
Wiklander et al. | Enabling component-based design for embedded real-time software | |
EP1088269A2 (en) | Object-oriented system having anonymous scheduler design pattern | |
Wang et al. | COTS simulation package (CSP) interoperability-a solution to synchronous entity passing | |
Varona-Gómez et al. | Architectural optimization & design of embedded systems based on AADL performance analysis | |
Yu et al. | Schedulability analysis of multi-processor real-time systems using uppaal | |
Sierszecki et al. | A run-time environment supporting real-time execution of embedded control applications | |
Feiler | Efficient embedded runtime systems through port communication optimization | |
Wang et al. | Interrupt nesting method based on time slice in embedded software | |
CN116737672B (zh) | 嵌入式操作系统中文件系统的调度方法、设备及存储介质 | |
Hussain et al. | Schedulability analysis for CAN bus messages of periodically-varying size |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210827 |
|
RJ01 | Rejection of invention patent application after publication |