The invention discloses a multi thread / multi process non lock processing method and system for reading and writing data on a disk. The method comprises the following steps: Step 1: create a plurality of processing threads / multiple processing process and each processing thread / process identification; step 2: thread / process is assigned a separate file or a file block with a file for each treatment, guarantee the processing thread / process the process of a single treatment was assigned to the file or file block; step 3: the main socket disk receiving operation request, according to the received request with the thread identifier / process identification, will be assigned to the operation related processing thread / process, and then processed by the associated thread / process. The disk writing scheme provided by the invention has no lock in the whole process, and does not need to use CAS to increase the energy consumption of the CPU, and improves the efficiency of disk writing.
【技术实现步骤摘要】
一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统
本专利技术公开了一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统,主要涉及磁盘读写领域。该方法创建多个处理线程/处理进程,并为每个处理线程/处理进程设置相应的标识,保证处理线程/处理进程单一地处理对应于各自文件或文件块的操作请求,来提高磁盘读写的效率。本专利技术提供的磁盘写入方案全程无锁,无需采用CAS增加CPU的能耗,提高了磁盘写入的效率。
技术介绍
在磁盘读写这一方面,为了提高读写的速度/效率,通常采用多线程/多进程处理对磁盘的操作。而采用多线程/多进程处理针对磁盘操作带来的一个问题是需要解决并发导致的数据版本错乱问题。通常的做法都是在各个线程/进程中,对于同一块数据进行加入互斥锁的方式来解决。后来随着计算机的发展,CPU的技术也一直在进步,CPU的制造商又加入了CAS的方式来解决因为加互斥锁带来的排队性能损耗。但是CAS本质上其实是使用CPU的空转或者说自旋来不断的尝试处理数据,以此来用CPU的能耗换取更快的处理。这些技术的背后或多或少的都带有一些问题,不是性能不足就是对硬件的CPU要求更高。为此 ...
【技术保护点】
一种磁盘读写数据的多线程/多进程无锁处理方法,该方法包括:步骤1:创建多个处理线程/多个处理进程并对每个处理线程/处理进程进行标识;步骤2:为每个处理线程/处理进程不同地分配一个单独的文件或者是同一个文件中的某一段文件块,保证处理线程/处理进程单一地处理被分配到的文件或文件块;步骤3:主socket接收磁盘操作请求,根据接收到的请求具有的线程标识/进程标识,将操作分配到对应的处理线程/处理进程,然后由对应的线程/进程进行处理。
【技术特征摘要】
1.一种磁盘读写数据的多线程/多进程无锁处理方法,该方法包括:步骤1:创建多个处理线程/多个处理进程并对每个处理线程/处理进程进行标识;步骤2:为每个处理线程/处理进程不同地分配一个单独的文件或者是同一个文件中的某一段文件块,保证处理线程/处理进程单一地处理被分配到的文件或文件块;步骤3:主socket接收磁盘操作请求,根据接收到的请求具有的线程标识/进程标识,将操作分配到对应的处理线程/处理进程,然后由对应的线程/进程进行处理。2.如权利要求1中所述的多线程/多进程无锁处理方法,其中创建的多个处理线程/处理进程每个都合并有独占的磁盘IO读写线程/进程,用于执行相关的磁盘操作。3.如权利要求1中所述的多线程/多进程无锁处理方法,其中步骤3中主socket根据接收到操作请求具有的线程标识/进程标识,将操作分配到其对应的处理线程/处理进程具体为根据操作请求具有的线程标识/进程标识采用负载均衡算法将操作分配到其对应的处理线程/处理进程。4.如权利要求3所述的多线程/多进程无锁处理方法,其中对于无标识的磁盘操作请求,主socket采用负载均衡算法结合创建的处理线程/处理进程的标识,将请求分配到一个处理线程/处理进程,操作执行完毕后,处理线程/处理进程返回一个带有元数据的ID,所述ID上带有处理线程/处理进程的对应的标识,这个ID将由调用方进行处理;对于有标识的请求,负载均衡算法模块会接收到相关操作的元数据ID,主socket采用负载均衡算法会根据元数据的ID,将操作分配到其相关的生产线程/生产进程,然后由其相关的线程/进程进行处理,实现“谁生产谁负责”;对于计算机由于某些原因改变处理线程/处理进程的数量,导致部分带有标识的操作请求有一部分是无法定位到原先的线程/进程来处理的,主socket采用负载均衡算法将这种找不到原先线程/进程处理的操作都一一对应地分配到同一个线程/进程上处理,即在同一时刻,同一个标识,只会被分配到一个线程/进程处理。5.如权利要求1所述的多线程/多进程无锁处理方法,其中步骤3中由对应的线程/进程进行处理,具体包括:对于写入磁盘的...
【专利技术属性】
技术研发人员:徐海峰,
申请(专利权)人:上海阅文信息技术有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。