CN117171102A - 一种多线程无锁高速写文件的方法 - Google Patents
一种多线程无锁高速写文件的方法 Download PDFInfo
- Publication number
- CN117171102A CN117171102A CN202311147352.5A CN202311147352A CN117171102A CN 117171102 A CN117171102 A CN 117171102A CN 202311147352 A CN202311147352 A CN 202311147352A CN 117171102 A CN117171102 A CN 117171102A
- Authority
- CN
- China
- Prior art keywords
- file
- data structure
- structure body
- thread
- write
- 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
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000006870 function Effects 0.000 claims abstract description 82
- 238000009825 accumulation Methods 0.000 claims description 24
- 230000009471 action Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种多线程无锁高速写文件的方法,涉及文件操作及多线程处理技术领域,通过利用标志位原子操作、句柄池等功能,显著提高了文件写入速度和效率。利用定时器和超时线程实现了文件的及时关闭和移动,确保了高效的文件写入。传统方法存在的性能问题和高延迟在这项发明中被有效解决,使其具备广泛的应用前景,能够提高文件写入的效率和性能,不仅可以应用于工业控制网络,还可以在其他领域中发挥重要作用。
Description
技术领域
本发明涉及文件操作及多线程处理技术领域,具体涉及一种多线程无锁高速写文件的方法。
背景技术
传统的文件写入方法在多线程环境下通常需要使用锁来保护共享资源,以确保线程安全。然而,使用锁会引入竞争和等待,降低了文件写入的性能。此外,通常写过程中实时创建多个文件句柄以处理多个写操作,也会增加文件写入的延迟。
发明内容
本发明为了克服以上技术的不足,提供了一种通过标志位原子操作和多句柄句柄池来实现高速写文件,从而提高了多线程环境下的文件写入效率的方法。
本发明克服其技术问题所采用的技术方案是:
一种多线程无锁高速写文件的方法,包括如下步骤:
a)在代码全局区域定义数据结构体thread_table,初始化数据结构体表tb;
b)创建读写文件目录并初始化写文件;
c)超时线程进行初始化及启动;
d)多个写线程进行写文件操作;
e)超时线程对写文件进行关闭、移动、新建及标志位更新。
进一步的,步骤a)包括如下步骤:
a-1)在代码全局区域定义数据结构体thread_table,数据结构体thread_table用于存储线程的线程编号、写文件句柄、写文件临时句柄、待关闭文件句柄、文件是否有数据标志位、文件是否需要重新创建标志位、文件累加计数标志、待移动的文件名称、下次移动的文件名称;
a-2)读取自定义的配置文件A,配置文件A用于获取全部写线程编号及写线程数量;
a-3)新建数据结构体表tb,通过malloc函数为数据结构体表tb创建一块连续内存,该内存中根据配置文件A中获取的写线程数量通过数组的形式存储相应数量的数据结构体thread_table,通过memset函数对数据结构体表tb进行清空动作,将写线程编号通过数组下标法一次赋值给数据结构体表tb中每个数据结构体thread_table的线程编号。
进一步的,步骤b)包括如下步骤:
b-1)读取自定义的配置文件B,配置文件B用于获取写文件目录、读文件目录,通过access函数检测写文件目录及读文件目录是否存在,如果存在则执行步骤b-2);
b-2)通过系统time函数获取当前系统时间,通过for循环遍历数据结构体表tb中的所有数据结构体thread_table,根据每个数据结构体thread_table中的线程编号和文件累加计数标志通过系统snprintf函数拼接写文件名为:当前系统时间-线程编号-文件累加计数标志;
b-3)根据写文件名在写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给每个数据结构体thread_table中的写文件句柄,每个数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给每个数据结构体thread_table的待移动的文件名称;
b-4)根据步骤b-3)中赋值后的每个数据结构体thread_table中的线程编号和文件累加计数标志通过系统snprintf函数拼接写文件名为:当前系统时间-线程编号-文件累加计数标志;
b-5)根据步骤b-4)中写文件名在写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给每个数据结构体thread_table中的写文件句柄,每个数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给每个数据结构体thread_table的下次移动的文件名称。
进一步的,步骤b-1)中如果写文件目录及读文件目录不存在则通过系统函数mkdir创建写文件目录及读文件目录。
进一步的,步骤c)包括如下步骤:
c-1)读取自定义的配置文件C,配置文件C用于获取写文件超时时间及超时线程的运行cpu编号;
c-2)基于配置文件C中的超时时间定义定时器timer及定义超线程超时后回调函数timer_cb;
c-3)调用函数timer_reset,将定时器timer、超线程超时后回调函数timer_cb、超时线程的运行cpu编号作为参数传递给函数timer_reset进行初始化操作;
c-4)通过DPDK中mainloop方式启动超时线程,该超时线程运行在指定的cpu编号上,定时器timer超时后,调用超线程超时后回调函数timer_cb。
进一步的,步骤d)包括如下步骤:
d-1)在写线程写入数据前基于写线程各自线程号,通过下标法找到步骤a-3)中数据结构体表tb对应的数据结构体thread_table,通过成员访问的方式得到数据结构体thread_table中存储的写文件句柄;
d-2)如果数据结构体thread_table中存储的写文件句柄为null,则返回执行步骤d-1),如果数据结构体thread_table中存储的写文件句柄不为null,则调用系统函数fwrite,将写文件的数据写入步骤d-1)中的写文件句柄中;
d-3)各写线程重复步骤d-1)只步骤d-2),持续写文件操作。
还包括在步骤d-2)后将数据结构体thread_table中存储的文件是否有数据标志位置为1。
进一步的,步骤e)包括如下步骤:
e-1)定时器timer超时后,调用超线程超时后回调函数timer_cb,超线程超时后回调函数timer_cb通过for循环遍历数据结构体表tb中所有数据结构体thread_table;
e-2)查看数据结构体thread_table的待关闭文件句柄是否有值,如果待关闭文件句柄为null,则执行步骤e-4),如果待关闭文件句柄不为null,则执行步骤e-3);
e-3)调用系统函数fclose关闭数据结构体thread_table的待关闭文件句柄,将该关闭的待关闭文件句柄设置为null,调用系统函数snprintf拼接写文件目录及数据结构体thread_table的待移动的文件名称,调用系统函数snprintf拼接读文件目录及数据结构体thread_table的待移动的文件名称,调用系统函数rename,将写文件拷贝至读文件目录中;
e-4)查看每一个数据结构体thread_table中的文件是否需要重新创建标志位置为1,如果否则执行步骤e-6),如果是则执行步骤e-5);
e-5)调用系统函数memset清空数据结构体thread_table中存储的下次移动的文件名称,通过系统函数snprintf拼接写文件名为:当前系统时间-线程编号-文件累加计数标志,根据得到的写文件名在步骤b-1)中写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给数据结构体thread_table中的写文件句柄,数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给数据结构体thread_table的下次移动的文件名称,将数据结构体thread_table中的文件是否需要重新创建标志位置为0;
e-6)查看每一个数据结构体thread_table中的文件是否有数据标志位是否为1,如果为1,则执行步骤e-7);
e-7)将数据结构体thread_table的写文件句柄幅值给待关闭文件句柄,将数据结构体thread_table的写文件临时句柄幅值给写文件句柄,将数据结构体thread_table的文件是否有数据标志位置0,将数据结构体thread_table的文件是否需要重新创建标志位置1。
进一步的,还包括在步骤e-7)后判断步骤e-1)中for循环是否结束,如果未结束则继续执行步骤e-2),如果结束则重复执行步骤e-1)。
本发明的有益效果是:
通过采用多线程无锁高速写文件的方法,极大地提升了文件写入性能和效率。传统的文件写入方式常常受限于锁机制,多线程环境下容易出现竞争和等待,导致性能下降和延迟增加。而本发明的方法通过多线程并发,每个线程独立进行文件写入,充分利用系统资源,避免了线程等待,从而显著提高了写入性能。
此外,本发明还采用了无锁机制,消除了线程之间的竞争,减少了系统开销,进一步提高了效率。这种机制尤其在高负载情况下表现出色,确保了文件写入的稳定性和可靠性。
通过预分配文件句柄和文件名,本发明加速了文件的创建和管理过程,避免了频繁的文件操作,降低了系统开销。同时,超时线程和定时器机制保证了文件的及时关闭和移动,提高了实时性,降低了数据丢失的风险。
本发明的设计简单清晰,易于实现和维护,适用于各种应用场景。它不仅提高了系统整体性能,还有助于降低资源浪费,从而为数据存储、日志记录、实时数据处理等领域的应用提供了强大的支持,提升了系统的实时性和吞吐量,为多线程高性能文件写入问题提供了一种可行的解决方案。
具体实施方式
下面对本发明做进一步说明。
一种多线程无锁高速写文件的方法,包括如下步骤:
a)在代码全局区域定义数据结构体thread_table,初始化数据结构体表tb。
b)创建读写文件目录并初始化写文件。
c)超时线程进行初始化及启动。
d)多个写线程进行写文件操作。
e)超时线程对写文件进行关闭、移动、新建及标志位更新。
通过引入一种无锁多线程文件写入方法,旨在提高文件写入性能并减少系统开销。这种方法通过标志位原子操作和多句柄句柄池来实现高速写文件,从而提高了多线程环境下的文件写入效率。通过创建一个线程表以跟踪各个线程的状态和文件句柄,该方法可以避免使用锁并降低了系统开销。此外,它还引入了定时器来处理文件的关闭和移动,以确保文件的正确处理。这种方法的实施不仅简化了多线程文件写入的流程,还提高了性能,减少了系统资源的占用,使其更适用于高速写入场景。
在本发明的一个实施例中,步骤a)包括如下步骤:
a-1)在代码全局区域定义数据结构体thread_table,数据结构体thread_table用于存储线程的线程编号、写文件句柄、写文件临时句柄、待关闭文件句柄、文件是否有数据标志位、文件是否需要重新创建标志位、文件累加计数标志、待移动的文件名称、下次移动的文件名称。
a-2)读取自定义的配置文件A,配置文件A用于获取全部写线程编号及写线程数量。
a-3)新建数据结构体表tb,通过malloc函数为数据结构体表tb创建一块连续内存,该内存中根据配置文件A中获取的写线程数量通过数组的形式存储相应数量的数据结构体thread_table,通过memset函数对数据结构体表tb进行清空动作,将写线程编号通过数组下标法一次赋值给数据结构体表tb中每个数据结构体thread_table的线程编号。
在本发明的一个实施例中,步骤b)包括如下步骤:
b-1)读取自定义的配置文件B,配置文件B用于获取写文件目录、读文件目录,通过access函数检测写文件目录及读文件目录是否存在,如果存在则执行步骤b-2)。
b-2)通过系统time函数获取当前系统时间,通过for循环遍历数据结构体表tb中的所有数据结构体thread_table,根据每个数据结构体thread_table中的线程编号和文件累加计数标志通过系统snprintf函数拼接写文件名为:当前系统时间-线程编号-文件累加计数标志。
b-3)根据写文件名在写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给每个数据结构体thread_table中的写文件句柄,每个数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给每个数据结构体thread_table的待移动的文件名称。
b-4)根据步骤b-3)中赋值后的每个数据结构体thread_table中的线程编号和文件累加计数标志通过系统snprintf函数拼接写文件名为:当前系统时间-线程编号-文件累加计数标志。
b-5)根据步骤b-4)中写文件名在写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给每个数据结构体thread_table中的写文件句柄,每个数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给每个数据结构体thread_table的下次移动的文件名称。
在该实施例中,优选的,步骤b-1)中如果写文件目录及读文件目录不存在则通过系统函数mkdir创建写文件目录及读文件目录。
在本发明的一个实施例中,步骤c)包括如下步骤:
c-1)读取自定义的配置文件C,配置文件C用于获取写文件超时时间及超时线程的运行cpu编号。
c-2)基于配置文件C中的超时时间定义定时器timer及定义超线程超时后回调函数timer_cb。
c-3)调用函数timer_reset,将定时器timer、超线程超时后回调函数timer_cb、超时线程的运行cpu编号作为参数传递给函数timer_reset进行初始化操作。
c-4)通过DPDK中mainloop方式启动超时线程,该超时线程运行在指定的cpu编号上,定时器timer超时后,调用超线程超时后回调函数timer_cb。
在本发明的一个实施例中,步骤d)包括如下步骤:
d-1)在写线程写入数据前基于写线程各自线程号,通过下标法找到步骤a-3)中数据结构体表tb对应的数据结构体thread_table,通过成员访问的方式得到数据结构体thread_table中存储的写文件句柄。
d-2)如果数据结构体thread_table中存储的写文件句柄为null,则返回执行步骤d-1),如果数据结构体thread_table中存储的写文件句柄不为null,则调用系统函数fwrite,将写文件的数据写入步骤d-1)中的写文件句柄中,实现文件写操作。
d-3)各写线程重复步骤d-1)只步骤d-2),持续写文件操作。
在该实施例中,优选的,还包括在步骤d-2)后将数据结构体thread_table中存储的文件是否有数据标志位置为1,置为1则表示该数据结构体thread_table写入的写文件有数据。
在本发明的一个实施例中,步骤e)包括如下步骤:
e-1)定时器timer超时后,调用超时线程超时后回调函数timer_cb,超时线程超时后回调函数timer_cb通过for循环遍历数据结构体表tb中所有数据结构体thread_table;
e-2)查看数据结构体thread_table的待关闭文件句柄是否有值,如果待关闭文件句柄为null,则表示该数据结构体对应的写文件不可以关闭,则执行步骤e-4),如果待关闭文件句柄不为null,则执行步骤e-3);
e-3)调用系统函数fclose关闭数据结构体thread_table的待关闭文件句柄,将该关闭的待关闭文件句柄设置为null,调用系统函数snprintf拼接写文件目录及数据结构体thread_table的待移动的文件名称,调用系统函数snprintf拼接读文件目录及数据结构体thread_table的待移动的文件名称,调用系统函数rename,将写文件拷贝至读文件目录中;
e-4)查看每一个数据结构体thread_table中的文件是否需要重新创建标志位置为1,则表示该数据结构体对应的临时写文件不需要新建,如果否则执行步骤e-6),如果是,则表示该结构体对应的临时写文件需要新建,则执行步骤e-5);
e-5)调用系统函数memset清空数据结构体thread_table中存储的下次移动的文件名称,通过系统函数snprintf拼接写文件名为:当前系统时间-线程编号-文件累加计数标志,根据得到的写文件名在步骤b-1)中写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给数据结构体thread_table中的写文件句柄,数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给数据结构体thread_table的下次移动的文件名称,将数据结构体thread_table中的文件是否需要重新创建标志位置为0;
e-6)查看每一个数据结构体thread_table中的文件是否有数据标志位是否为1,如果不是1,则表示该数据结构体存储的写文件句柄无数据写入,对该文件及数据结构体不做任何操作,如果为1,则表示该数据结构体存储的谢文杰句柄有数据写入,则执行步骤e-7);
e-7)将数据结构体thread_table的写文件句柄幅值给待关闭文件句柄,将数据结构体thread_table的写文件临时句柄幅值给写文件句柄,保证线程写操作不受影响,将数据结构体thread_table的文件是否有数据标志位置0,将数据结构体thread_table的文件是否需要重新创建标志位置1。
在该实施例中,优选的,还包括在步骤e-7)后判断步骤e-1)中for循环是否结束,如果未结束则继续执行步骤e-2),如果结束则重复执行步骤e-1)。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种多线程无锁高速写文件的方法,其特征在于,包括如下步骤:
a)在代码全局区域定义数据结构体thread_table,初始化数据结构体表tb;
b)创建读写文件目录并初始化写文件;
c)超时线程进行初始化及启动;
d)多个写线程进行写文件操作;
e)超时线程对写文件进行关闭、移动、新建及标志位更新。
2.根据权利要求1所述的多线程无锁高速写文件的方法,其特征在于,步骤a)包括如下步骤:
a-1)在代码全局区域定义数据结构体thread_table,数据结构体thread_table用于存储线程的线程编号、写文件句柄、写文件临时句柄、待关闭文件句柄、文件是否有数据标志位、文件是否需要重新创建标志位、文件累加计数标志、待移动的文件名称、下次移动的文件名称;
a-2)读取自定义的配置文件A,配置文件A用于获取全部写线程编号及写线程数量;
a-3)新建数据结构体表tb,通过malloc函数为数据结构体表tb创建一块连续内存,该内存中根据配置文件A中获取的写线程数量通过数组的形式存储相应数量的数据结构体thread_table,通过memset函数对数据结构体表tb进行清空动作,将写线程编号通过数组下标法一次赋值给数据结构体表tb中每个数据结构体thread_table的线程编号。
3.根据权利要求2所述的多线程无锁高速写文件的方法,其特征在于,步骤b)包括如下步骤:
b-1)读取自定义的配置文件B,配置文件B用于获取写文件目录、读文件目录,通过access函数检测写文件目录及读文件目录是否存在,如果存在则执行步骤b-2);
b-2)通过系统time函数获取当前系统时间,通过for循环遍历数据结构体表tb中的所有数据结构体thread_table,根据每个数据结构体thread_table中的线程编号和文件累加计数标志通过系统snprintf函数拼接写文件名为:当前系统时间-线程编号-文件累加计数标志;
b-3)根据写文件名在写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给每个数据结构体thread_table中的写文件句柄,每个数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给每个数据结构体thread_table的待移动的文件名称;
b-4)根据步骤b-3)中赋值后的每个数据结构体thread_table中的线程编号和文件累加计数标志通过系统snprintf函数拼接写文件名为:当前系统时间-线程编号-文件累加计数标志;
b-5)根据步骤b-4)中写文件名在写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给每个数据结构体thread_table中的写文件句柄,每个数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给每个数据结构体thread_table的下次移动的文件名称。
4.根据权利要求3所述的多线程无锁高速写文件的方法,其特征在于:步骤b-1)中如果写文件目录及读文件目录不存在则通过系统函数mkdir创建写文件目录及读文件目录。
5.根据权利要求3所述的多线程无锁高速写文件的方法,其特征在于,步骤c)包括如下步骤:
c-1)读取自定义的配置文件C,配置文件C用于获取写文件超时时间及超时线程的运行cpu编号;
c-2)基于配置文件C中的超时时间定义定时器timer及定义超线程超时后回调函数timer_cb;
c-3)调用函数timer_reset,将定时器timer、超线程超时后回调函数timer_cb、超时线程的运行cpu编号作为参数传递给函数timer_reset进行初始化操作;
c-4)通过DPDK中mainloop方式启动超时线程,该超时线程运行在指定的cpu编号上,定时器timer超时后,调用超线程超时后回调函数timer_cb。
6.根据权利要求2所述的多线程无锁高速写文件的方法,其特征在于,步骤d)包括如下步骤:
d-1)在写线程写入数据前基于写线程各自线程号,通过下标法找到步骤a-3)中数据结构体表tb对应的数据结构体thread_table,通过成员访问的方式得到数据结构体thread_table中存储的写文件句柄;
d-2)如果数据结构体thread_table中存储的写文件句柄为null,则返回执行步骤d-1),如果数据结构体thread_table中存储的写文件句柄不为null,则调用系统函数fwrite,将写文件的数据写入步骤d-1)中的写文件句柄中;
d-3)各写线程重复步骤d-1)只步骤d-2),持续写文件操作。
7.根据权利要求6所述的多线程无锁高速写文件的方法,其特征在于:还包括在步骤d-2)后将数据结构体thread_table中存储的文件是否有数据标志位置为1。
8.根据权利要求5所述的多线程无锁高速写文件的方法,其特征在于,步骤e)包括如下步骤:
e-1)定时器timer超时后,调用超线程超时后回调函数timer_cb,超线程超时后回调函数timer_cb通过for循环遍历数据结构体表tb中所有数据结构体thread_table;
e-2)查看数据结构体thread_table的待关闭文件句柄是否有值,如果待关闭文件句柄为null,则执行步骤e-4),如果待关闭文件句柄不为null,则执行步骤e-3);
e-3)调用系统函数fclose关闭数据结构体thread_table的待关闭文件句柄,将该关闭的待关闭文件句柄设置为null,调用系统函数snprintf拼接写文件目录及数据结构体thread_table的待移动的文件名称,调用系统函数snprintf拼接读文件目录及数据结构体thread_table的待移动的文件名称,调用系统函数rename,将写文件拷贝至读文件目录中;
e-4)查看每一个数据结构体thread_table中的文件是否需要重新创建标志位置为1,如果否则执行步骤e-6),如果是则执行步骤e-5);
e-5)调用系统函数memset清空数据结构体thread_table中存储的下次移动的文件名称,通过系统函数snprintf拼接写文件名为:当前系统时间-线程编号-文件累加计数标志,根据得到的写文件名在步骤b-1)中写文件目录中创建写文件,调用系统fopen函数对写文件进行打开动作,得到写文件句柄,将写文件句柄赋值给数据结构体thread_table中的写文件句柄,数据结构体thread_table的文件累加计数标志加1,通过系统函数memcpy将写文件名赋值给数据结构体thread_table的下次移动的文件名称,将数据结构体thread_table中的文件是否需要重新创建标志位置为0;
e-6)查看每一个数据结构体thread_table中的文件是否有数据标志位是否为1,如果为1,则执行步骤e-7);
e-7)将数据结构体thread_table的写文件句柄幅值给待关闭文件句柄,将数据结构体thread_table的写文件临时句柄幅值给写文件句柄,将数据结构体thread_table的文件是否有数据标志位置0,将数据结构体thread_table的文件是否需要重新创建标志位置1。
9.根据权利要求8所述的多线程无锁高速写文件的方法,其特征在于:还包括在步骤e-7)后判断步骤e-1)中for循环是否结束,如果未结束则继续执行步骤e-2),如果结束则重复执行步骤e-1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311147352.5A CN117171102B (zh) | 2023-09-07 | 2023-09-07 | 一种多线程无锁高速写文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311147352.5A CN117171102B (zh) | 2023-09-07 | 2023-09-07 | 一种多线程无锁高速写文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117171102A true CN117171102A (zh) | 2023-12-05 |
CN117171102B CN117171102B (zh) | 2024-01-26 |
Family
ID=88935931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311147352.5A Active CN117171102B (zh) | 2023-09-07 | 2023-09-07 | 一种多线程无锁高速写文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117171102B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073910A1 (en) * | 2002-10-15 | 2004-04-15 | Erdem Hokenek | Method and apparatus for high speed cross-thread interrupts in a multithreaded processor |
CN101132369A (zh) * | 2007-08-15 | 2008-02-27 | 中兴通讯股份有限公司 | 网络处理器中定时器的实现方法 |
CN101253482A (zh) * | 2005-08-30 | 2008-08-27 | 英特尔公司 | 公平可缩放的读者写者互斥 |
CN102591722A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 片上网络多核处理器多线程的资源分配处理方法和系统 |
CN102750132A (zh) * | 2012-06-13 | 2012-10-24 | 深圳中微电科技有限公司 | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 |
CN104102549A (zh) * | 2013-04-01 | 2014-10-15 | 华为技术有限公司 | 一种实现多线程互斥操作的方法、装置和芯片 |
CN104750811A (zh) * | 2015-03-30 | 2015-07-01 | 浪潮通信信息系统有限公司 | 一种移动通信数据文件多线程实时采集方法 |
CN106484776A (zh) * | 2016-09-12 | 2017-03-08 | 天脉聚源(北京)科技有限公司 | 一种基于多线程的数据处理方法及装置 |
CN115374340A (zh) * | 2022-09-02 | 2022-11-22 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备及存储介质 |
CN115576776A (zh) * | 2022-10-17 | 2023-01-06 | 珠海格力智能装备有限公司 | 一种实现日志监控的方法、系统及计算机可读存储介质 |
-
2023
- 2023-09-07 CN CN202311147352.5A patent/CN117171102B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073910A1 (en) * | 2002-10-15 | 2004-04-15 | Erdem Hokenek | Method and apparatus for high speed cross-thread interrupts in a multithreaded processor |
CN101253482A (zh) * | 2005-08-30 | 2008-08-27 | 英特尔公司 | 公平可缩放的读者写者互斥 |
CN101132369A (zh) * | 2007-08-15 | 2008-02-27 | 中兴通讯股份有限公司 | 网络处理器中定时器的实现方法 |
CN102591722A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 片上网络多核处理器多线程的资源分配处理方法和系统 |
CN102750132A (zh) * | 2012-06-13 | 2012-10-24 | 深圳中微电科技有限公司 | 多线程虚拟流水线处理器的线程控制和调用方法及其处理器 |
CN104102549A (zh) * | 2013-04-01 | 2014-10-15 | 华为技术有限公司 | 一种实现多线程互斥操作的方法、装置和芯片 |
CN104750811A (zh) * | 2015-03-30 | 2015-07-01 | 浪潮通信信息系统有限公司 | 一种移动通信数据文件多线程实时采集方法 |
CN106484776A (zh) * | 2016-09-12 | 2017-03-08 | 天脉聚源(北京)科技有限公司 | 一种基于多线程的数据处理方法及装置 |
CN115374340A (zh) * | 2022-09-02 | 2022-11-22 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备及存储介质 |
CN115576776A (zh) * | 2022-10-17 | 2023-01-06 | 珠海格力智能装备有限公司 | 一种实现日志监控的方法、系统及计算机可读存储介质 |
Non-Patent Citations (3)
Title |
---|
KANG DONGHYUN 等: "Prediction-based Dynamic Thread Pool Scheme for Efficient Resource Usage", IEEE 8TH INTERNATIONAL CONFERENCE ON COMPUTER AND INFORMATION TECHNOLOGY WORKSHOPS, pages 159 - 164 * |
陆倩 等: "一种提高嵌入式系统可靠性的自监测技术", 系统仿真学报, vol. 25, no. 11, pages 2687 - 2692 * |
鲁晋 等: "利用多线程思想实现单片机系统的伪并行处理", 微计算机信息, no. 03, pages 58 - 59 * |
Also Published As
Publication number | Publication date |
---|---|
CN117171102B (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | Lock-free concurrent level hashing for persistent memory | |
US10296615B2 (en) | In-memory database system | |
US8307173B2 (en) | High performance real-time read-copy update | |
US20100211753A1 (en) | Parallel garbage collection and serialization without per-object synchronization | |
Flood et al. | Parallel garbage collection for shared memory multiprocessors | |
US20120310987A1 (en) | System and Method for Performing Memory Management Using Hardware Transactions | |
CN110727675B (zh) | 一种链表的处理方法及装置 | |
Gelado et al. | Throughput-oriented GPU memory allocation | |
CN1230740C (zh) | 数字信号处理装置 | |
US10929201B2 (en) | Method and system for implementing generation locks | |
US11204813B2 (en) | System and method for multidimensional search with a resource pool in a computing environment | |
JP5435741B2 (ja) | 競合管理を容易にするための型固定性の使用 | |
CN117171102B (zh) | 一种多线程无锁高速写文件的方法 | |
US6393440B1 (en) | Data structure for keeping track of objects remaining to be traced by concurrent garbage collector | |
Wang et al. | Persisting RB-Tree into NVM in a consistency perspective | |
Wen et al. | A fast, general system for buffered persistent data structures | |
Marotta et al. | A non-blocking priority queue for the pending event set | |
Sagonas et al. | Contention adapting search trees | |
Marotta et al. | A non-blocking buddy system for scalable memory allocation on multi-core machines | |
Blelloch et al. | Concurrent reference counting and resource management in wait-free constant time | |
CN111198660A (zh) | 一种b+树遍历的方法及装置 | |
Moreno et al. | Memory reclamation methods for lock-free hash tries | |
Wen et al. | Montage: A general system for buffered durably linearizable data structures | |
Izraelevitz et al. | Generality and speed in nonblocking dual containers | |
CN111352860B (zh) | 一种Linux Bcache中的垃圾回收方法及系统 |
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 |