CN113505000A - 区块链中的多线程处理方法、装置、系统和存储介质 - Google Patents
区块链中的多线程处理方法、装置、系统和存储介质 Download PDFInfo
- Publication number
- CN113505000A CN113505000A CN202111048025.5A CN202111048025A CN113505000A CN 113505000 A CN113505000 A CN 113505000A CN 202111048025 A CN202111048025 A CN 202111048025A CN 113505000 A CN113505000 A CN 113505000A
- Authority
- CN
- China
- Prior art keywords
- transaction data
- thread
- sub
- threads
- sending
- 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.)
- Granted
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
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Abstract
本申请提供了一种区块链中的多线程处理方法、装置、系统和存储介质,方法包括获取交易的多任务线程和交易数据,其中多任务线程包括第一线程和多个第二线程;交易数据包括多个子交易数据;通过第一线程将每一个子交易数据发送至任一个发送缓冲区;其中,发送缓冲区的数量与第二线程的数量相同;通过任一个第二线程从对应的发送缓冲区中获取子交易数据,并对子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。该方法将交易数据分成多个子交易数据分别在不同线程上进行验证,可以提高验证速度,从而提高了整个交易数据处理速度。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种区块链中的多线程处理方法、装置、系统和存储介质。
背景技术
区块链是分布式系统中,通过统一记账,全局唯一定序、确认达到分布式一致性,同时具有操作可回溯以及不可抵赖性的特点。由于区块链这些特点,已被应用于数字交易、溯源、司法存证、以及供应链管理等。但区块链的交易处理速度一直是制约其进一步广泛应用的主要问题,如果交易处理速度难以提升,则在业务上很难有效利用。
目前主要是采用区块链分片技术或流水线技术来提高区块链的交易处理速度。但目前的流水线技术就是根据将交易处理步骤机械化地分成几个子步骤,每个子步骤可以作为一个线程,操作系统随机地给各个线程的子步骤分配CPU资源,该方法可能会导致操作系统一直给负责某些步骤的线程分配CPU资源,而负责其他步骤的线程将无法获得CPU资源,那么完整的交易步骤就无法及时完成而积压大量的“半完成”的交易,从而导致交易延迟的增加。
发明内容
有鉴于此,本申请实施例中提供了一种区块链中的多线程处理方法、装置、系统和存储介质。
第一方面,本申请实施例提供了一种区块链中的多线程处理方法,所述区块链包括互相通信的多个节点,所述方法应用于每一个所述节点;所述方法包括:
获取交易的多任务线程和交易数据,其中所述多任务线程包括第一线程和多个第二线程;所述交易数据包括多个子交易数据;
通过所述第一线程将每一个所述子交易数据发送至任一个发送缓冲区;其中,所述发送缓冲区的数量与第二线程的数量相同;
通过任一个所述第二线程从对应的所述发送缓冲区中获取所述子交易数据,并对所述子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;
通过所述第一线程将所述接收缓冲区中的所述验证后的子交易数据封装出块,形成区块。
第二方面,本申请实施例提供了一种区块链中的多线程处理装置,所述区块链包括互相通信的多个节点,所述装置应用于每一个所述节点;所述装置包括:
信息获取模块,用于获取交易的多任务线程和交易数据,其中所述多任务线程包括第一线程和多个第二线程;所述交易数据包括多个子交易数据;
交易信息发送模块,用于通过所述第一线程将每一个所述子交易数据发送至任一个发送缓冲区;其中,所述发送缓冲区的数量与第二线程的数量相同;
交易信息验证模块,用于通过任一个所述第二线程从对应的所述发送缓冲区中获取所述子交易数据,并对所述子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;
封装出块模块,用于通过所述第一线程将所述接收缓冲区中的所述验证后的子交易数据封装出块,形成区块。
第三方面,本申请实施例提供了一种区块链系统,包括互相通信的多个节点,每一个所述节点为终端设备;所述终端设备包括存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行上述第一方面提供的区块链中的多线程处理方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行上述第一方面提供的区块链中的多线程处理方法。
本申请实施例提供的区块链中的多线程处理方法、装置、系统和存储介质, 其中区块链包括互相通信的多个节点,多线程处理方法应用于每一个节点,首先获取交易的多任务线程和交易数据,其中多任务线程包括第一线程和多个第二线程;交易数据包括多个子交易数据;然后通过第一线程将每一个子交易数据发送至任一个发送缓冲区;发送缓冲区的数量与第二线程的数量相同,再通过任一个第二线程从对应的发送缓冲区中获取子交易数据,并对子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;最后通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。
该方法采用多核处理技术将区块链中的交易处理过程分成多任务线程,并且在划分多任务线程时根据区块链交易处理的逻辑关系将交易数据的分配和封装出块分为一种线程(即第一线程),将交易数据的验证分为另一种线程(即第二线程);在划分好线程后,可以将交易数据分割成多个子交易数据,然后通过第一线程将各子交易数据分配给各第二线程,每一个第二线程可以分别对子交易数据进行验证。该方法一方面将交易数据分成多个子交易数据分别在不同线程上进行验证,可以提高验证速度,从而提高了整个交易数据处理速度;另一方面在线程划分时充分考虑了区块链交易处理的逻辑关系(即交易处理各步骤中顺序关系),为最耗时的子交易数据验证过程分配独立的线程,当该步骤完成时完整的交易将基本完成,从而可以使完整的交易能及时完成,避免积压大量的“半完成”的交易而导致交易延迟的增加。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的区块链中的多线程处理方法的应用场景示意图(即区块链系统结构示意图);
图2为本申请一个实施例提供的区块链中的多线程处理方法的流程示意图;
图3为本申请一个实施例提供的区块链结构示意图;
图4为本申请一个实施例提供的区块链中的多线程处理方法的流程示意图;
图5为本申请一个实施例提供的区块链中的多线程处理装置的结构图;
图6为本申请一个实施例中提供的计算机可读存储介质的结构示意图。
具体实施方式
下面将对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更详细说明本申请,下面结合附图对本申请提供的一种区块链中的多线程处理方法、装置、终端设备和计算机存储介质,进行具体地描述。
请参考图1,图1示出了本申请实施例提供的区块链中的多线程处理方法的应用场景(即区块链系统结构)的示意图,该应用场景包括本申请实施例提供的区块链系统100,该区块链系统100包含了多个节点102。各个节点102可以是安装有区块链软件程序的服务器、服务器组以及终端设备等设备实现,或这些设备中的多种构成的分布式处理系统实现。节点102之间通过点对点网络通信连接以实现相互信息收发。其中,点对点网络(peer-to-peer,P2P),又称对等式网络,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于减少以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也可承担服务器的功能。
其中,终端设备可以是具有显示屏的各种电子设备,包括但不限于智能手机和计算机设备,其中计算机设备可以是台式计算机、便携式计算机、膝上型计算机、平板电脑、个人计算机等设备中的至少一种。本领域技术人员可以知晓,上述终端设备的数量可以更多或更少。比如上述终端设备可以仅为几个,或者上述终端设备为几十个或几百个,或者更多数量,本申请实施例对终端设备的数量和类型不加以限定。
需要说明的是上述示例中所展示的节点102虽然呈现为服务器、终端设备等实体设备,但是实质上这些实体设备仅为载体,其主要是通过安装并运行区块链软件程序的情况下来实现节点102的功能,例如实现节点102之间的共识机制等,故不需限制实体设备的类型。在确定本申请保护范围时,节点即实质上受控于所安装的区块链软件程序以实现所需功能的实体设备,区块链软件程序包括但不限于例如比特币交易所软件程序,火币、币安等,钱包类的imtoken等。
另外,节点可以为多核终端设备,可以执行本申请实施例中提供的一种区块链中的多线程处理方法。
基于此,本申请实施例中提供了一种区块链中的多线程处理方法。请参阅图2,图2示出了本申请实施例提供的一种区块链中的多线程处理方法的流程示意图,其中区块链包括互相通信的多个节点,每一个节点可以为多核终端设备,多线程处理方法可应用于每一个节点;现以该方法应用于图1中的节点为例进行说明,包括以下步骤:
步骤S110,获取交易的多任务线程和交易数据。
其中,多任务线程包括第一线程和多个第二线程;交易数据包括多个子交易数据。
具体地,如图3所示,区块链是由区块连接构成的链条,而各个区块记录了经共识确认的交易信息的哈希值。通过验证的可信交易记录将被盖上时间戳(Timestamp)并存储到区块链上一个区块上。每一个区块上都包括前一个区块的哈希值(Hash),区块N-1为区块N的前一区块,区块N为区块N+1的前一区块,以此链接成区块链;而在每一个区块内部,所有交易记录则以如默克尔树(Merkle Tree)的结构存储,图中简单表示为哈希树(HashTree)。
其中,区块链的工作过程为:首先产生一笔新交易,该新交易会被广播到区块链网络中的其它参与节点,各节点将数笔新交易放进区块,每个节点会将数笔未验证的交易Hash值收集到区块中,每个区块可以包含数百笔或上千笔交易;然后各节点进行工作量证明的计算来决定谁可以验证交易,由最快算出结果的节点来验证交易,这就是取得共识的做法;取得验证权的节点将区块广播给所有节点,最快完成POW的节点,会将自己的区块广播给其他节点,各节点验证并接上新区块,其他节点会确认这个区块所包含的交易是否有效,确认没被重复花费且具有效数位签章后,接受该区块,此时区块才正式接上区块链,无法再窜改资料。另外,当所有节点一旦接受该区块后,先前没算完POW工作的区块会失效,各节点会重新建立一个区块,继续下一回POW计算工作。
在本实施例中,交易数据是指交易过程产生的一些信息,包括但不限于交易用户信息、交易资产等。其中,交易数据可以包括多笔交易。子交易数据是指交易数据中的部分数据,其中一个字交易数据也可以多笔交易。
交易的多任务线程是指交易的整个过程可以分为多个任务线程,其中多任务线程是从软件或者硬件上实现多个线程并发执行的技术,其中,线程是程序中一个单一的顺序控制流程。
第一线程是指为第二线程分配工作任务的线程,在本实施例中主要是用于向第二工作线程分配子交易数据,并且将验证后的子交易数据封装出块,形成区块的工作线程。
第二线程是指对子交易数据进行验证的工作线程。
步骤S120,通过第一线程将每一个子交易数据发送至任一个发送缓冲区。
其中,发送缓冲区的数量与第二线程的数量相同。
步骤S130,通过任一个第二线程从对应的发送缓冲区中获取子交易数据,并对子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区。
具体地,可以通过第一线程将每一个子交易数据发送至任一个发送缓冲区,然后第二线程就可以从发送缓冲区中获取到子交易数据,对子交易数据进行验证,最后将验证后的子交易数据发送至接收缓冲区。其中,在通过第一线程将子交易数据发送至发送缓冲区时,第一线程每次发送一个子交易数据,并且一个子交易数据只能发送给一个发送缓冲区。而且一个子交易数据可以发送给多个发送缓冲区中任意一个,但在实际运行中为了保证多个第二线程的并行运行,所有的子交易通常不能发送给同一个发送缓存区。并且为了最大限度地确保多个第二线程的实时并行运行,应尽量将所有的子交易数据均匀分配至每一个发送缓冲区。
其中,发送缓冲区是用来存储供第二线程进行验证的子交易数据。可选地,发送缓冲区的数量可以与第二线程的数量是一致的,即每一个第二线程都有一个对应的发送缓冲区。采用该方式可以方便每一个第二线程快速获得子交易数据。
接收缓冲区是用来存储第二线程验证后的子交易数据,这些验证后的子交易数据可以通过第一线程封装形成新的区块。可选地,接收缓冲区的数量可以是一个或多个。在一种优选的实施方式中,接收缓冲区的数量为一个,那么所有的第二线程都可以把验证后的子交易数据发送并存储与接收缓冲区。采用该方式可以方便第一线程对验证后的子交易数据进行封装出块。
对子交易数据进行验证是指区块链技术中的数据验证,数据验证是根据基于区块链应用事先达成的各种验证协议来进行,包括但不限于交易的格式、交易的数据结构、格式的语法结构、输入输出、数字签名的正确性等。
步骤S140,通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。
其中,接收缓冲区中通常存储与多个验证后的子交易数据,那么可以通过第一线程对这些验证后的子交易数据进行封装出块,形成区块。
本申请实施例提供的区块链中的多线程处理方法,其中区块链包括互相通信的多个节点,每一个节点为多核终端设备,多线程处理方法应用于每一个节点,首先获取交易的多任务线程和交易数据,其中多任务线程包括第一线程和多个第二线程;交易数据包括多个子交易数据;然后通过第一线程将每一个子交易数据发送至任一个发送缓冲区;再通过第二线程从对应的发送缓冲区中获取子交易数据,并对子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;最后通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。
该方法采用多核处理技术将区块链中的交易处理过程分成多任务线程,并且在划分多任务线程时根据区块链交易处理的逻辑关系将交易数据的分配和封装出块分为一种线程(即第一线程),将交易数据的验证分为另一种线程(即第二线程);在划分好线程后,可以将交易数据分割成多个子交易数据,然后通过第一线程将各子交易数据分配给各第二线程,每一个第二线程可以分别对子交易数据进行验证。该方法一方面将交易数据分成多个子交易数据分别在不同线程上进行验证,可以提高验证速度,从而提高了整个交易数据处理速度;另一方面在线程划分时充分考虑了区块链交易处理的逻辑关系(即交易处理各步骤中顺序关系),为最耗时的子交易数据验证过程分配独立的线程,当该步骤完成时完整的交易将基本完成,从而可以使完整的交易能及时完成,避免积压大量的“半完成”的交易而导致交易延迟的增加。
进一步地,多任务线程还包括第三线程,下面对第三线程的作用进行说明,描述如下:
在一个实施例中,多任务线程还包括第三线程;区块链中的多线程处理方法还包括:通过第三线程为交易数据分配内存,并将交易数据存储于内存。
在一种具体的实施例中,通过第三线程为交易数据分配内存,包括:通过第三线程定时检测内存的占空比,当占空比大于预设阈值时,增加内存的容量;或,当占空比小于预设阈值时,将第三线程转换成第二线程。
在一个实施例中,区块链中的多线程处理方法还包括:通过第三线程获取节点的处理器内核数量,根据处理器内核数量确定多任务线程的线程数量,其中,多任务线程的线程数量小于或等于处理器内核数量。
具体而言,多任务线程还可以包括第三线程,其中第三线程通常是整个程序(即整个多任务线程)的主线程。其主要作用为存储交易数据,以及开启第一线程和第二线程,下面对其作用进行详细的说明。
当节点整个程序启动后,首先会启动第三线程,并初始化第三线程。第三线程可以先开启一块内存,该内存用来存储获取的交易数据。在存储交易数据的过程中,通常可以设置数据结构(例如DS),然后将交易数据按照设置的数据结构存储于内存中。可选的,设置的数据结构可以是任一种数据结构,例如队列结构。将交易数据存储于内存方便通过第一线程快速获取子交易数据并分配给第二线程的发送缓冲区。
其次,交易数据中包括多个子交易数据,在对交易数据进行存储时通常时常以一个子交易数据为单元进行存储,以方便第一线程为第二线程分配子交易数据。
此外,在为交易数据分配后内存,第一线程可以开启计时器,然后每隔一段时间T检查内存(在本实施例中为DS)的占空比,其中占空比是指已写入的数据量与DS能存放的最大数据量之比。若其超过预设阈值,则先清除计时器,增加DS的大小(即容量),完成后重新启动计时器;若其低于预设阈值,说明此时第一线程不需要处理工作,即处于空闲状态,此时可以将第三线程转化为第二线程,然后进行子交易数据进行验证,待计时结束后重新检查DS的占空比。
另外,第三线程也可以开启第一线程和第二线程,具体过程为:第三线程通过系统调用获取多核终端设备的处理器内核数量𝑁𝑐𝑜𝑟𝑒,开启一个第一线程,若干个第二线程,例如𝑃1,𝑃2,𝑃3,…,𝑃𝑛,其中n≤𝑁𝑐𝑜𝑟𝑒-2。在本实施例中,根据核终端设备的处理器内核数量来确定线程的数量,即有多少个处理器内核就对应开启多少个线程,从而避免了线程过多,需要来回切换,浪费时间。
在一个实施例中,在执行步骤S120,通过第一线程将子交易数据发送至任一个发送缓冲区,包括:通过第一线程产生一个随机数;当随机数与任一个发送缓存区的编号相同时,通过第一线程将子交易数据发送至编号与随机数相同的发送缓冲区。
具体地,第一线程可以将子交易数据随机发送给任一个发送缓冲区。可以对第二线程进行编号,第一线程产生一个随机数,当该随机数是第二线程的编号时,通过第一线程将子交易数据发送至编号与随机数相同的发送缓冲区。
为了便于理解,给出一个详细实施例。第一线程生成一个随机数r∈[1,n+1],将就子交易数据tx发送至r对应的发送缓冲区。如果r的编号正好是第三线程转换成第二线程的编号,那么还需要检测此时的第三线程是否转换成了第二线程,如果没有,则第一线程放弃此次子交易数据tx的发送。另外,第一线程在将子交易数据tx发送至第二线程的发送缓冲区时还需要判断该发送缓冲区的存储量是否达到最大值(即处于已满状态),如果是,则第一线程也要放弃此次子交易数据tx的发送。
此外,随机数的生成方式可以是多种的,例如采用c语言的(rand()%(n+1)+1)函数等。
第一线程采用随机的子交易数据分配方式,可以尽可能保证均匀性地对各第二线程进行子交易数据分,并且不需要对第二线程的运行状态(是处于空闲还是忙碌状态)进行判断,减少了第一线程的运行步骤,从而能有效节约时间。
在一个实施例中,在执行步骤S120,通过第一线程将每一个子交易数据发送至任一个发送缓冲区之前,还包括:通过第一线程对子交易数据进行格式检测和查重操作,删除不符合格式和/或重复的子交易数据。
具体而言,在第一线程将子交易数据发送至任一个发送缓冲区之前还需要对子交易数据进行检测,以确保其格式符合要求,以及删除重复的子交易数据。
在一种可选的实施方式中,可以通过第一线程检查子交易数据是否符合交易的格式(例如JSON格式),并进行查重操作(例如检测每个类别的交易的nonce字段是否均比链上已有的同类别的大),将重复的交易剔除。
采用上述方式可以将排除不符合要求的子交易数据,从而避免对不符合要求的交易数据进行验证,可以节约时间。
在一个实施例中,在执行步骤S140,通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块,包括:在接收到任一个第二线程发送的清空接收缓冲区信号或到达预设出块时间时,通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。
具体而言,第一线程在接收到任一个第二线程发送的清空接收缓冲区信号,可以将接收缓冲区中的验证后的子交易数据封装出块以形成区块。其中,清空接收缓冲区信号是在任一个第二线程判断出接收缓冲区的占空比超过一定阈值时向第一线程发送的信号,该信息主要用于指示第一线程完成封装出块操作。
此外,第一线程也可以设置计时器,当计时器记录到预设出块时间时,第一线程也可以将接收缓冲区中的验证后的子交易数据封装出块以形成区块。
采用上述的方式可以准确确定第一线程封装出块的时间,在该时间之外第一线程可以处理其他操作,不需要去判断何时出块,可以大大节约时间。
(3)从操作系统内核中获取原始的交易数据txs,并存入DS中。
(4)然后每隔一段时间T检查DS的占空比(已写入的数据量与DS能存放的最大数据量之比)。若其超过一定的阈值,则先清除计时器,增加DS的大小,完成后重新启动计时器;若其低于一定的阈值,则转换为“工作线程”模式,待计时结束后重新检查DS的占空比,其线程序号为“n+1”。
4、生成一个随机数r[1,n+1]。若r=n+1,则检查第三线程是否处于实际工作任务的第二线程模式,若是则将子交易数据tx发送至发送缓冲区r,若r≠n+1,则将子交易数据tx发送至发送缓冲区r。循环执行步骤3和4。
5、若收到任一工作线程i[1,n+1]的“清空接收缓冲区”的信号,则先清空定时器,然后将接收缓冲区的子交易数据全部移出,并封装成区块,再重新启动定时器;否则,在定时信号到来后(即到达预设出块时间),将接收缓冲区的子交易数据全部移出,并封装成区块。
第二线程工作流程为:
第二线程i[1,n+1]不断地从发送缓冲区i移出子交易数据,验证其子交易数据是否与其签名相对应,若通过验签操作,则将验证后的子交易数据发送至接收缓冲区,此时若接收缓冲区的占空比达到某一特定阈值,则发送“清空接收缓冲区”的信号给第一线程。
应该理解的是,虽然图2及图4 的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图2及图4 中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述本申请公开的实施例中详细描述了一种区块链中的多线程处理方法,对于本申请公开的上述方法可采用多种形式的设备实现,因此本申请还公开了对应上述方法的区块链中的多线程处理装置,下面给出具体的实施例进行详细说明。
请参阅图5,为本申请实施例公开的一种区块链中的多线程处理装置,区块链包括互相通信的多个节点,每一个节点为多核终端设备,装置应用于每一个节点;装置包括:
信息获取模块510,用于获取交易的多任务线程和交易数据,其中多任务线程包括第一线程和多个第二线程;交易数据包括多个子交易数据;
交易信息发送模块520,用于通过第一线程将每一个子交易数据发送至任一个发送缓冲区。
交易信息验证模块530,用于通过任一个第二线程从对应的发送缓冲区中获取子交易数据,并对子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;其中,发送缓冲区的数量与第二线程的数量相同。
封装出块模块540,用于通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。
在一个实施例中,多任务线程还包括第三线程;装置还包括:内存分配模块,用于通过第三线程为交易数据分配内存,并将交易数据存储于内存。
在一个实施例中,装置还包括:线程数量确定模块,用于通过第三线程获取节点的处理器内核数量,根据处理器内核数量确定多任务线程的线程数量,其中,多任务线程的线程数量小于或等于处理器内核数量。
在一个实施例中,内存分配模块,用于通过第三线程定时检测内存的占空比,当占空比大于预设阈值时,增加内存的容量。
或装置还包括线程转换模块,其中线程转换模块,用于当占空比小于预设阈值时,将第三线程转换成第二线程。
在一个实施例中,交易信息发送模块520,用于通过第一线程产生一个随机数;当随机数与任一个发送缓存区的编号相同时,通过第一线程将子交易数据发送至编号与随机数相同的发送缓冲区。
在一个实施例中,交易信息发送模块520,用于通过第一线程对子交易数据进行格式检测和查重操作,删除不符合格式和/或重复的子交易数据。
在一个实施例中,封装出块模块540,用于在接收到任一个第二线程发送的清空接收缓冲区信号或到达预设出块时间时,通过第一线程将接收缓冲区中的验证后的子交易数据封装出块,形成区块。
关于区块链中的多线程处理装置的具体限定可以参见上文中对于方法的限定,在此不再赘述。上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端设备中的处理器中,也可以以软件形式存储于终端设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
请参考图1,图1其示出了本申请实施例提供的一种区块链系统的结构框图。该区块链系统包括互相通信的多个节点,每一个节点为终端设备。该终端设备可以是计算机设备。本申请中的终端设备可以包括一个或多个如下部件:处理器、存储器以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行上述应用于终端设备的方法实施例中所描述的方法,也可以配置用于执行上述应用于区块链中的多线程处理方法实施例中所描述的方法。
处理器可以包括一个或者多个处理核。处理器利用各种接口和线路连接整个终端设备内的各个部分,通过运行或执行存储在存储器内的指令、程序、代码集或指令集,以及调用存储在存储器内的数据,执行终端设备的各种功能和处理数据。可选地,处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器可集成中央处理器(Central Processing Unit,CPU)、埋点数据的上报验证器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器中,单独通过一块通信芯片进行实现。
存储器可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器可用于存储指令、程序、代码、代码集或指令集。存储器可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端设备在使用中所创建的数据等。
综上,本申请实施例提供的节点(即终端设备)用于实现前述方法实施例中相应的区块链中的多线程处理方法,并具有相应的方法实施例的有益效果,在此不再赘述。
请参阅图6,其示出了本申请实施例提供的一种计算机可读取存储介质的结构框图。该计算机可读取存储介质60中存储有程序代码,程序代码可被处理器调用执行上述区块链中的多线程处理方法实施例中所描述的方法,也可以被处理器调用执行上述区块链中的多线程处理方法实施例中所描述的方法。
计算机可读取存储介质60可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读取存储介质60包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读取存储介质60具有执行上述方法中的任何方法步骤的程序代码62的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码62可以例如以适当形式进行压缩。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种区块链中的多线程处理方法,其特征在于,所述区块链包括互相通信的多个节点,所述方法应用于每一个所述节点;所述方法包括:
获取交易的多任务线程和交易数据,其中所述多任务线程包括第一线程和多个第二线程;所述交易数据包括多个子交易数据;
通过所述第一线程将每一个所述子交易数据发送至任一个发送缓冲区;其中,所述发送缓冲区的数量与第二线程的数量相同;
通过任一个所述第二线程从对应的所述发送缓冲区中获取所述子交易数据,并对所述子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;
通过所述第一线程将所述接收缓冲区中的所述验证后的子交易数据封装出块,形成区块。
2.根据权利要求1所述的方法,其特征在于,所述多任务线程还包括第三线程;所述方法还包括:
通过所述第三线程为所述交易数据分配内存,并将所述交易数据存储于所述内存。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述第三线程获取所述节点的处理器内核数量,根据所述处理器内核数量确定所述多任务线程的线程数量,其中,所述多任务线程的线程数量小于或等于所述处理器内核数量。
4.根据权利要求2所述的方法,其特征在于,所述通过所述第三线程为所述交易数据分配内存,包括:
通过所述第三线程定时检测所述内存的占空比,当所述占空比大于预设阈值时,增加所述内存的容量;
或当所述占空比小于所述预设阈值时,将所述第三线程转换成所述第二线程。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述通过所述第一线程将所述子交易数据发送至任一个发送缓冲区,包括:
通过所述第一线程产生一个随机数;
当所述随机数与任一个所述发送缓存区的编号相同时,通过所述第一线程将所述子交易数据发送至编号与所述随机数相同的所述发送缓冲区。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述通过所述第一线程将所述子交易数据发送至任一个发送缓冲区之前,还包括:
通过所述第一线程对所述子交易数据进行格式检测和查重操作,删除不符合格式和/或重复的所述子交易数据。
7.根据权利要求6所述的方法,其特征在于,所述通过所述第一线程将所述接收缓冲区中的所述验证后的子交易数据封装出块,形成区块,包括:
在接收到任一个所述第二线程发送的清空接收缓冲区信号或到达预设出块时间时,通过所述第一线程将所述接收缓冲区中的所述验证后的子交易数据封装出块,形成所述区块。
8.一种区块链中的多线程处理装置,其特征在于,所述区块链包括互相通信的多个节点,所述装置应用于每一个所述节点;所述装置包括:
信息获取模块,用于获取交易的多任务线程和交易数据,其中所述多任务线程包括第一线程和多个第二线程;所述交易数据包括多个子交易数据;
交易信息发送模块,用于通过所述第一线程将每一个所述子交易数据发送至任一个发送缓冲区;其中,所述发送缓冲区的数量与第二线程的数量相同;
交易信息验证模块,用于通过任一个所述第二线程从所述发送缓冲区中获取所述子交易数据,并对所述子交易数据进行验证,在验证通过后,将验证后的子交易数据发送至接收缓冲区;
封装出块模块,用于通过所述第一线程将所述接收缓冲区中的所述验证后的子交易数据封装出块,形成区块。
9.一种区块链系统,其特征在于,包括互相通信的多个节点,每一个所述节点为终端设备;所述终端设备包括存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111048025.5A CN113505000B (zh) | 2021-09-08 | 2021-09-08 | 区块链中的多线程处理方法、装置、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111048025.5A CN113505000B (zh) | 2021-09-08 | 2021-09-08 | 区块链中的多线程处理方法、装置、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113505000A true CN113505000A (zh) | 2021-10-15 |
CN113505000B CN113505000B (zh) | 2021-12-21 |
Family
ID=78016467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111048025.5A Active CN113505000B (zh) | 2021-09-08 | 2021-09-08 | 区块链中的多线程处理方法、装置、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113505000B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629748A (zh) * | 2022-04-01 | 2022-06-14 | 日立楼宇技术(广州)有限公司 | 一种楼宇数据的处理方法、楼宇的边缘网关及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109377225A (zh) * | 2018-10-30 | 2019-02-22 | 杭州复杂美科技有限公司 | 交易分配方法、共识方法、设备和存储介质 |
CN109523455A (zh) * | 2018-09-30 | 2019-03-26 | 平安科技(深圳)有限公司 | 一种图像数据异步传输方法、装置及计算机可读存储介质 |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及系统 |
KR20190140688A (ko) * | 2018-06-12 | 2019-12-20 | 주식회사 호윤 | 신속한 검색을 위한 시퀀스 해쉬를 이용한 블록체인 생성 시스템 및 그 방법 |
CN111418183A (zh) * | 2019-11-27 | 2020-07-14 | 支付宝(杭州)信息技术有限公司 | 区块链区块的异步处理 |
CN111984421A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 数据处理方法、装置及存储介质 |
CN112015558A (zh) * | 2020-09-03 | 2020-12-01 | 深圳壹账通智能科技有限公司 | 数据验证方法、装置及存储介质 |
CN113157710A (zh) * | 2021-02-01 | 2021-07-23 | 苏宁金融科技(南京)有限公司 | 区块链数据并行写入方法、装置、计算机设备及存储介质 |
-
2021
- 2021-09-08 CN CN202111048025.5A patent/CN113505000B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190140688A (ko) * | 2018-06-12 | 2019-12-20 | 주식회사 호윤 | 신속한 검색을 위한 시퀀스 해쉬를 이용한 블록체인 생성 시스템 및 그 방법 |
CN109523455A (zh) * | 2018-09-30 | 2019-03-26 | 平安科技(深圳)有限公司 | 一种图像数据异步传输方法、装置及计算机可读存储介质 |
CN109377225A (zh) * | 2018-10-30 | 2019-02-22 | 杭州复杂美科技有限公司 | 交易分配方法、共识方法、设备和存储介质 |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及系统 |
CN111418183A (zh) * | 2019-11-27 | 2020-07-14 | 支付宝(杭州)信息技术有限公司 | 区块链区块的异步处理 |
CN111984421A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 数据处理方法、装置及存储介质 |
CN112015558A (zh) * | 2020-09-03 | 2020-12-01 | 深圳壹账通智能科技有限公司 | 数据验证方法、装置及存储介质 |
CN113157710A (zh) * | 2021-02-01 | 2021-07-23 | 苏宁金融科技(南京)有限公司 | 区块链数据并行写入方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
冒小乐 等: "基于区块链的电子数据存证的设计与实现", 《中兴通讯技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629748A (zh) * | 2022-04-01 | 2022-06-14 | 日立楼宇技术(广州)有限公司 | 一种楼宇数据的处理方法、楼宇的边缘网关及存储介质 |
CN114629748B (zh) * | 2022-04-01 | 2023-08-15 | 日立楼宇技术(广州)有限公司 | 一种楼宇数据的处理方法、楼宇的边缘网关及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113505000B (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681963B (zh) | 多区块链整合控制方法、系统、电子装置及存储介质 | |
CN104618155B (zh) | 一种虚拟机容错的方法、装置及系统 | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
WO2019195969A1 (zh) | 数据同步处理的方法和装置 | |
US8065503B2 (en) | Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process | |
WO2021031473A1 (zh) | 基于多资产模型的区块链资产处理方法及相关设备 | |
CN112667414A (zh) | 基于消息队列的消息消费方法、装置、计算机设备及介质 | |
EP2701074A1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
JP5986602B2 (ja) | 端末のデータセットの正確なコピーを同期させるための方法、装置、端末、及びサーバ | |
CN109189572B (zh) | 一种资源预估方法及系统、电子设备和存储介质 | |
CN108898368B (zh) | 资源的转移方法和装置、存储介质、电子装置 | |
CN111061735B (zh) | 一种基于单链区块链的扩容方法及装置 | |
CN113505000B (zh) | 区块链中的多线程处理方法、装置、系统和存储介质 | |
WO2020163327A1 (en) | System-based ai processing interface framework | |
CN109857810B (zh) | 基于区块链的数据同步装置及方法 | |
WO2022179486A1 (zh) | 多核处理器任务调度方法、装置及设备、存储介质 | |
CN113032166A (zh) | 核间通信的方法、处理器、核间通信系统及计算机可读存储介质 | |
CN110399329B (zh) | 一种rdma的数据处理方法及相关装置 | |
CN111367621A (zh) | 智能合约定时处理方法、区块链节点及存储介质 | |
CN107204998B (zh) | 处理数据的方法和装置 | |
CN109684048A (zh) | 事务提交系统中处理事务的方法及装置 | |
Perumalla et al. | Discrete event execution with one-sided and two-sided gvt algorithms on 216,000 processor cores | |
CN116308772B (zh) | 交易分发方法、节点和区块链系统 | |
CN110716805A (zh) | 图形处理器的任务分配方法、装置、电子设备及存储介质 | |
CN109558254A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |