CN115269226A - 一种基于原子消息与共享缓存的多线程多级并行通信方法 - Google Patents
一种基于原子消息与共享缓存的多线程多级并行通信方法 Download PDFInfo
- Publication number
- CN115269226A CN115269226A CN202210888202.9A CN202210888202A CN115269226A CN 115269226 A CN115269226 A CN 115269226A CN 202210888202 A CN202210888202 A CN 202210888202A CN 115269226 A CN115269226 A CN 115269226A
- Authority
- CN
- China
- Prior art keywords
- synchronous
- message
- atomic
- data
- thread
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于原子消息与共享缓存的多线程多级并行通信方法,包括以下步骤:确定软件应用工程的多线程层级关系;确立各级线程之间的同步、异步关系和生产者、消费者关系;其中同步关系的线程建立同步原子消息和同步共享数据缓存通信集合;而异步关系的线程则建立异步原子消息和异步数据缓存通信集合;生产者线程更新当前原子消息中的同步或异步消息,将封装的消息、数据结构放入通信集合;而消费者线程则实时获取同步原子消息,解析消息体中的数据并完成后续操作。通过采用封装的原子消息、共享缓冲通信集合方式,满足多级线程的消息通信、数据交互,满足实时性要求,有效提高了应用程序多线程通信的灵活性与稳定性。
Description
技术领域
本发明涉及多线程处理领域,尤其涉及一种基于原子消息与共享缓存的多线程多级并行通信方法。
背景技术
近几十年多核处理器由于其强大的并行计算能力、多任务处理能力、高集成、低功耗等优点被广泛应用到诸多领域,而多线程并行处理技术的应用发展更好地发挥了多核处理器的性能优势。但是,多线程并行编程技术较单线程、串行编程的研发、调试难度更大,需要应用开发人员了解线程的运行机制、线程的同步异步关系、线程的调度、线程的消息通信、线程的数据传输、线程的任务分配等诸多问题,解决不好上述问题,无法真正发挥出多核多线程处理器的强大的并行处理优势。
随着线程数的增多,线程间的通信越来越多,同时在线程通信上所花费的时间、资源也越来越多。稳定、高效的通信方式能够在完成通信任务的同时,又能有效地降低通信成本;否则不但浪费处理时间还容易造成线程间的死锁,降低处理性能。因此,好的线程通信方式在当前多核多线程处理器应用中尤为重要。
现有多核处理器消息通信方法中,目前主流的通信方法有定时器判别方式、令牌触发通信方法。定时器判别方式通过将各个线程生成的数据传输通信句柄添加到链表中用于对异步通信进行控制,采用定时器判别通信成功或失败,这种方式将线程间的通信依靠定时器进行消息驱动,线程同步的频率需要与定时器的节奏保持一致,并且线程数目越多、线程关系越复杂,定时器的设置也越复杂,因此局限较多,灵活性不够。令牌触发通信方法线程在结束并行阶段到达同步点之后,按照获取令牌的顺序进入串行阶段,线程串行阶段执行结束后,在同步点阻塞当所有线程结束串行阶段后开启新一轮事务执行,实际上这种方法线程并行阶段、串行阶段流程上还是串行执行,线程在同步点阻塞,处理后才进行下一步处理,线程由于阻塞等待浪费了不少时间。
通过上述分析,仅仅单靠设置固定的同步点进行线程同步并不能保证线程间通信的及时性、可靠性。因此,现有技术尚有待改进和发展。
发明内容
本发明的目的在于提供一种基于原子消息与共享缓存的多线程多级并行通信方法,通过在多级并行关系中建立多线程间的原子读写标识消息、共享数据缓存结构通信集合,实现原子消息驱动、共享缓存数据的线程信息交互方式,使得多级线程间根据不同的消息通信集合完成同步、异步数据通信、交互操作,从而提高应用程序中多级线程间通信的稳定性、可靠性。
本发明提出的一种基于原子消息与共享缓存的多线程多级并行通信方法,技术方案如下:
A、确定软件应用工程的多线程层级关系,即线程串并行区间、并行层级个数、每层线程个数。
B、确定各层级线程之间的同步、异步关系和生产者、消费者关系;
C、对于同步关系的线程,建立同步原子消息和同步共享数据缓存通信集合;对于异步关系的线程,建立异步原子消息和异步数据缓存通信集合;同步关系的生产者、消费者线程共享原子消息和数据缓存通信集合;异步关系的生产者、消费者线程拥有各自的原子消息和数据缓存通信集合;
D、生产者、消费者关系的生产者线程获取当前通信集合中的同步或异步原子消息,更新同步消息、同步共享数据缓存或者更新异步消息和异步数据缓存;
E、生产者、消费者关系的消费者线程获取对应通信集合中的同步或异步原子消息,解析消息体中的缓冲区数据并完成后续操作。
进一步的,其中步骤A中多线程的串并行区间以一个线程模块的输出不作为另一个线程模块的输入为区分依据;多线程并行关系的主线程作为一级并行,可并行任务单元主线程作为二级并行,由并行任务单元主线程派生出的子线程作为三级并行;每层并行关系中的线程个数据具体应用需求确定。
进一步的,其中步骤C包括:
C1、同步关系的各级线程的同步原子消息和同步共享数据缓存通信集合均建立在共享内存上;异步关系线程的异步原子消息和异步数据缓存通信集合均建立在共享内存上;
C2、同步关系的生产者、消费者线程共享原子消息和数据缓存通信集合列;异步关系的生产者、消费者线程拥有各自的原子消息和数据缓存通信集合;
进一步的,其中步骤C中的原子消息和数据缓存通信集合独立于各级线程;
进一步的,其中步骤C中原子消息分为写标识lWriteCnt和读标识lReadCnt;数据缓冲区大小Size、个数Num根据不同的应用需求而定。
进一步的,其中步骤D中还包括:
D1、同步关系中的生产者线程完成处理操作后,原子操作更新写标识,根据写标识循环遍历缓冲区数据,更新对应同步共享数据缓存中的缓冲区数据;
D2、异步关系中的生产者线程完成处理操作后,原子操作更新写标识,根据写标识循环遍历缓冲区数据,更新各自数据缓存中的缓冲区数据;
进一步的,其中步骤E中还包括:
E1、同步关系中的消费者线程获取同步消息通信集合中的同步消息,循环读取写标识,然后实时原子操作更新读标识,根据读标识循环遍历同步共享缓存通信集合中的缓冲区数据,完成后续处理;
E2、异步关系中的消费者线程获取异步消息通信集合中的异步消息,循环读取写标识,然后原子操作更新读标识,并根据读标识循环遍历异步数据缓存通信集合中的缓冲区数据,完成后续处理;
更进一步的,生产者完成数据处理更新写标识lWriteCnt,并将处理结果写入对应标识的数据缓冲区中;消费者获取写标识lWriteCnt并更新对应读标识lReadCnt,根据读标识循环遍历缓冲区数据。其中读写标识的差值表征着生产者与消费者之间的处理速度差值,当该差值大于缓冲区临界值时,即消费者被生产者赶超,处理来不及;当该差值小于缓冲区临界值时,处理正常进行。
进一步的,生产者更新写标识lWriteCnt,并根据写标识将处理结果写入缓冲区通信集合后,并不会阻塞在同步点直到消费者处理完成,而是即刻返回开始处,继续等待新的数据处理请求,完成新一轮的数据处理、更新写标识lWriteCnt、更新缓冲区数据;消费者则单方面根据读写标识差值,逐一循环处理,从而可减少生产者因为同步阻塞带来的时间消耗。
本发明所提供的一种基于原子消息与共享缓存的多线程多级并行通信方法,在多级并行线程间采用原子操作读写标识和共享数据缓存结构通信集合方式进行多线程间的消息通信,实现生产者到消费者之间一对一、一对多、多对一、多对多的灵活通信,保证了不同应用场景中的线程交互关系,极大地提高了多核多线程***间多线程通信的灵活性、可靠性。
附图说明
图1是一种基于原子消息与共享缓存的多线程多级并行通信方法的操作流程图;
图2是一种基于原子消息与共享缓存的多线程多级并行通信方法的多线程关系示意图;
图3是一种基于原子消息与共享缓存的多线程多级并行通信方法的流程图。
具体实施方式
以下将结合实施例及附图所示,对本发明一种基于原子消息与共享缓存的多线程多级并行通信方法加以详细说明。
图1是一种基于原子消息与共享缓存的多线程多级并行通信方法的实施例操作流程图,具体操作步骤包括:
步骤1:确定软件应用工程的多线程层级关系,即线程串并行区间、并行层级个数、每层线程个数;
步骤2:确定各层级线程之间的同步、异步关系和生产者、消费者关系;
步骤3:对于同步关系的线程,建立同步原子消息和同步共享数据缓存结构通信集合;对于异步关系的线程,建立异步原子消息和异步数据缓存结构通信集合;同步关系的生产者、消费者线程共享原子消息和数据缓存结构通信集合;异步关系的生产者、消费者用户线程拥有各自的原子消息和数据缓存结构通信集合;
步骤4:生产者、消费者关系的生产者线程获取当前通信集合中的同步或异步原子消息,更新同步消息、共享数据缓存或者更新异步消息和异步数据缓存;
步骤5:生产者、消费者关系的消费者线程获取对应通信集合中的同步或异步原子消息,解析消息体中的缓冲区数据并完成后续操作。
如图2所示一种基于原子消息与共享缓存的多线程多级并行通信方法的线程关系示意图,主线程作为生产者产生数据,原子更新写标识及缓冲区通信集合送至下一级并行线程消费者;消费者线程读取写标识后,更新读标识、处理缓冲区通信集合数据,作为下一级并行线程生产者,原子更新新一级写标识及缓冲区通信集合,此时生产者、消费者之间属于同步关系;主线程派生多通道子线程作为消费者,子线程之间不存在数据交互,此时属于异步关系。
如图3所示一种基于原子消息与共享缓存的多线程多级并行通信方法的线程通信流程图,步骤如下:
步骤1:生产者完成当前数据的处理,原子操作更新写标识,根据写标识遍历更新缓冲区数据,将封装的消息、数据结构体放入消息队列;之后,生产者继续处理下一轮数据;
步骤2:消费者端循环判别生产者的写标识是否更新,是则进入步骤3;否则进入步骤1;
步骤3:消费者读取写标识,判别生产者写标识是否大于消费者读标识;是则进入步骤4;否则返回步骤2;
步骤4:消费者端计算出生产者写标识与消费者读标识之间的差值是否大于缓冲区临界值;是则进入步骤5;否则进入步骤6;缓冲区临界值根据实际使用大小设定;
步骤5:当该值大于临界值时,即消费者被生产者赶超,处理来不及,初始化读写标识队列后重新载入数据;
步骤6:当该值小于临界值时,消费者线程原子操作更新读标识,完成后续处理,并根据读写标识差值循环更新缓冲区数据。
Claims (8)
1.一种基于原子消息与共享缓存的多线程多级并行通信方法,其包括以下步骤:
A、确定软件应用工程的多线程层级关系,即线程串并行区间、并行层级个数、每层线程个数;
B、确定各层级线程之间的同步、异步关系和生产者、消费者关系;
C、对于同步关系的线程,建立同步原子消息和同步共享数据缓存结构通信集合;对于异步关系的线程,建立异步原子消息和异步数据缓存结构通信集合;
D、生产者、消费者关系的生产者线程获取当前通信集合中的同步或异步原子消息,更新同步消息和同步共享数据缓存或者更新异步消息和异步数据缓存;
E、生产者、消费者关系的消费者线程获取对应通信集合中的同步或异步原子消息,解析消息体中的缓冲区数据并完成后续操作。
2.根据权利要求1所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:所述步骤A中多线程的串并行区间以一个线程模块的输出不作为另一个线程模块的输入为区分依据;多线程并行关系的主线程作为一级并行,可并行任务单元主线程作为二级并行,由并行任务单元主线程派生出的子线程作为三级并行;每层并行关系中的线程个数根据具体应用需求确定。
3.根据权利要求1所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:所述步骤C中原子消息和数据缓存通信集合独立于各级线程。
4.根据权利要求1所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:所述步骤C中,原子消息分为写标识原子消息lWriteCnt和读标识原子消息lReadCnt;数据缓冲区大小Size、缓冲区个数Num根据不同的应用需求而定;原子消息和数据缓存区队列建立于共享内存上。
5.根据权利要求1所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:所述步骤C中同步关系的生产者、消费者线程共享原子消息和数据缓存通信集合;异步关系的线程拥有各自的原子消息和数据缓存通信集合。
6.根据权利要求1所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:同步关系中的生产者线程完成处理操作后,原子更新当前通信集合中的同步原子消息写标识,并根据写标识更新对应同步数据缓存中的缓冲区数据;同步关系中的消费者线程循环获取同步通信集合中的同步原子消息写标识,然后原子操作更新读标识,并根据读标识获取对应数据缓存集合中的缓冲区数据,完成后续处理。
7.根据权利要求6所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:生产者完成数据处理更新写标识lWriteCnt,并通过写标识取余的方式将处理结果写入对应标识的数据缓冲区中;消费者获取写标识lWriteCnt并更新对应读标识lReadCnt,根据读标识循环遍历缓冲区数据;其中读写标识的差值表征着生产者与消费者之间的处理速度差值,当该差值大于缓冲区临界值时,即消费者被生产者赶超,处理来不及;当该差值小于缓冲区临界值时,处理正常进行。
8.根据权利要求7所述的一种基于原子消息与共享缓存的多线程多级并行通信方法,其特征在于:生产者更新写标识lWriteCnt,并根据写标识将处理结果写入缓冲区通信集合后,并不会阻塞在同步点直到消费者处理完成,而是即刻返回开始处,继续等待新的数据处理请求,完成新一轮的数据处理、更新写标识lWriteCnt、更新缓冲区数据;消费者则单方面根据读写标识差值,逐一循环处理;生产者和消费者对各自的写、读标识原子操作,不存在同时读、写操作,避免了读写竞争,减少生产者因为同步阻塞带来的时间消耗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210888202.9A CN115269226A (zh) | 2022-07-27 | 2022-07-27 | 一种基于原子消息与共享缓存的多线程多级并行通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210888202.9A CN115269226A (zh) | 2022-07-27 | 2022-07-27 | 一种基于原子消息与共享缓存的多线程多级并行通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115269226A true CN115269226A (zh) | 2022-11-01 |
Family
ID=83768973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210888202.9A Pending CN115269226A (zh) | 2022-07-27 | 2022-07-27 | 一种基于原子消息与共享缓存的多线程多级并行通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269226A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785767A (zh) * | 2024-02-27 | 2024-03-29 | 苏州仰思坪半导体有限公司 | 消息同步方法、***以及相关装置 |
-
2022
- 2022-07-27 CN CN202210888202.9A patent/CN115269226A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785767A (zh) * | 2024-02-27 | 2024-03-29 | 苏州仰思坪半导体有限公司 | 消息同步方法、***以及相关装置 |
CN117785767B (zh) * | 2024-02-27 | 2024-04-23 | 苏州仰思坪半导体有限公司 | 消息同步方法、***以及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8458721B2 (en) | System and method for implementing hierarchical queue-based locks using flat combining | |
US8675006B2 (en) | Apparatus and method for communicating between a central processing unit and a graphics processing unit | |
US9619301B2 (en) | Multi-core memory model and speculative mode processor management | |
US9098918B2 (en) | Graphics processor with non-blocking concurrent architecture | |
JP5678135B2 (ja) | オペレーティング・システム介入なしにos隔離シーケンサー上でスレッドをスケジューリングする機構 | |
US7962923B2 (en) | System and method for generating a lock-free dual queue | |
EP0330836A2 (en) | Method for multiprocessor system having self-allocating processors | |
US20120159495A1 (en) | Non-blocking wait-free data-parallel scheduler | |
US8973009B2 (en) | Allocation and control unit for controlling parallel execution of threads on auxiliary processing units | |
US20110265093A1 (en) | Computer System and Program Product | |
US9830157B2 (en) | System and method for selectively delaying execution of an operation based on a search for uncompleted predicate operations in processor-associated queues | |
CN112199173A (zh) | 双核cpu实时操作***数据处理方法 | |
US20050066149A1 (en) | Method and system for multithreaded processing using errands | |
CN115269226A (zh) | 一种基于原子消息与共享缓存的多线程多级并行通信方法 | |
EP2282265A1 (en) | A hardware task scheduler | |
CN110032450B (zh) | 一种基于固态盘扩展内存的大规模深度学习方法及*** | |
Singh et al. | A non-database operations aware priority ceiling protocol for hard real-time database systems | |
CN111597035A (zh) | 基于多线程的仿真引擎时间推进方法及*** | |
CN113094260B (zh) | 一种分布式***时序关系建模与仿真分析方法 | |
Fukuoka et al. | An efficient inter-node communication system with lightweight-thread scheduling | |
Deshpande et al. | Analysis of the Go runtime scheduler | |
US5386586A (en) | System and method for construction of lists of deferred service requests | |
CN117407182B (zh) | 一种基于Poll指令的进程同步方法、***、设备及介质 | |
US11809219B2 (en) | System implementing multi-threaded applications | |
Yeh | Accelerating Parallel Tasks by Optimizing GPU Hardware Utilization |
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 | ||
CB02 | Change of applicant information |
Address after: 210003 No. 346, Zhongshan North Road, Jiangsu, Nanjing Applicant after: 724 Research Institute of China Shipbuilding Corp. Address before: 210003 No. 346, Zhongshan North Road, Jiangsu, Nanjing Applicant before: 724TH RESEARCH INSTITUTE OF CHINA SHIPBUILDING INDUSTRY Corp. |
|
CB02 | Change of applicant information |