CN108153679A - 一种数据加载、数据处理的方法、装置及设备 - Google Patents
一种数据加载、数据处理的方法、装置及设备 Download PDFInfo
- Publication number
- CN108153679A CN108153679A CN201611100826.0A CN201611100826A CN108153679A CN 108153679 A CN108153679 A CN 108153679A CN 201611100826 A CN201611100826 A CN 201611100826A CN 108153679 A CN108153679 A CN 108153679A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer zone
- data buffer
- pointer variable
- written
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明实施例公开了一种数据加载、数据处理的方法、装置及设备,该加载方法包括:获取待写入数据;将第一数据缓冲区的第一首地址值赋值给写指针变量,依据写指针变量将待写入数据加载至第一数据缓冲区;若待写入数据已经加载完毕,则将第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将第二首地址值赋值给所述写指针变量,其中第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。本发明实施例解决了现有技术中为了实现非阻塞式加载的互不冲突,采取互斥锁的方式,使得缓冲区数据的读取任务需要进行等待,造成用户体验感差的问题;达到了内存数据更新目的,用户体验感强。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种数据加载、数据处理的方法、装置及设备。
背景技术
在产品开发过程中,动态加载数据较为常见。现有的数据加载策略大致分为两种,阻塞式加载和非阻塞式加载。阻塞式加载意味着在数据加载到缓冲区的过程中,对该缓冲区数据的读取和/或写入任务都会进行等待,数据加载完成后唤醒等待的任务继续执行;非阻塞式加载意味着数据加载与数据读写可以同时进行,互不冲突。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:为了实现非阻塞式加载的互不冲突,通常需要采取互斥锁的方式,而这种方式使得缓冲区数据的读取任务需要进行等待,进而造成用户体验感差。
发明内容
为了解决现有技术存在的问题,本发明实施例提供了一种数据加载、数据处理的方法、装置及设备。所述技术方案如下:
根据本发明实施例的第一方面,提供一种数据加载方法,所述方法包括:
获取待写入数据;
将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
根据本发明实施例的第二方面,提供一种数据处理方法,所述方法包括:
获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
将第二数据缓冲区的第一首地址值赋值给读指针变量,依据所述读指针变量读取所述第二数据缓冲区的数据;
若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
根据本发明实施例的第三方面,提供一种数据处理装置,所述装置包括数据加载模块、地址切换处理模块及数据读取模块;其中
所述数据加载模块,用于获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
所述数据读取模块,用于将第二数据缓冲区的第一首地址值赋值给读指针变量,依据所述读指针变量读取所述第二数据缓冲区的数据;
所述地址切换处理模块,用于若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量;
其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
根据本发明实施例的第四方面,提供一种设备,所述设备包括数据缓冲区、读指针变量、写指针变量、程序存储器及处理器;
所述数据缓冲区,包括第一数据缓冲区和第二数据缓冲区,用于数据的读取和加载,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间;
所述指针变量,包括读指针变量和写指针变量,用于存取所述第一数据缓冲区和所述第二数据缓冲区的首地址值;
所述处理器,用于执行所述程序存储器存取的指令:
获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
将第二数据缓冲区的第一首地址值赋值给读指针变量,依据所述读指针变量读取所述第二数据缓冲区的数据;
若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
本发明实施例提供的技术方案带来的有益效果是:通过设置双数据缓冲区,在其中一数据缓冲区完成数据加载之后,进行地址切换处理;解决了现有技术中为了实现非阻塞式加载的互不冲突,需要采取互斥锁的方式,使得缓冲区数据的读取任务需要进行等待,进而造成用户体验感差的问题;达到了内存数据更新的目的,而不需要重新启动后台服务,避免了服务暂停,用户的体验感强。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的数据加载方法的示意流程图;
图2是根据一示例性实施例示出的数据处理方法的示意流程图;
图3是根据一示例性实施例示出的数据处理装置的框图;
图4是根据一示例性实施例示出的数据处理装置的框图;
图5是根据一示例性实施例示出的设备的框图;
图6是根据一示例性实施例示出的数据处理的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
请参考图1所示,其示出了本发明一示例性实施例还示出一种数据加载方法,该方法包括步骤:
101、获取待写入数据。
102、将第一数据缓冲区的第一首地址值赋值给写指针变量,依据写指针变量将待写入数据加载至第一数据缓冲区。
103、若待写入数据已经加载完毕,则将第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将第二首地址值赋值给写指针变量。
在该步骤中,通过将第一首地址值赋值给读指针变量,将第二首地址值赋值给写指针变量,实现了第一数据缓冲区和第二数据缓冲区的地址切换。需要说明的是,该步骤中的地址赋值操作为原子操作。
在本实施例中,第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。第一数据缓冲区和第二数据缓冲区都可用于数据加载和数据读取操作。具体地,第一数据缓冲区和第二数据缓冲区可以为内存当中的两块缓冲区。
在一种可选的实施例中,该方法还可包括步骤:
依据读指针变量,读取第一数据缓冲区的数据。
在本实施例中,当待写入数据已经加载完毕,且将第一数据缓冲区的第一首地址值赋值给读指针变量时,依据读指针变量,读取的是第一数据缓冲区的数据,即为加载至第一数据缓冲区的待写入数据。
在一种可选的实施例中,该方法还可包括步骤:
依据写指针变量,清空第二数据缓冲区的数据。
在本实施例中,依据写指针变量,清空第二数据缓冲区的数据,可节省数据缓冲区的内存空间。
在另一种可选的实施例中,该方法还可包括步骤:
重新获取待写入数据。
依据写指针变量,将重新获取的待写入数据加载至第二数据缓冲区。
在本实施例中,当获取第二数据缓冲区的第二首地址值,且将第二首地址值赋值给写指针变量时,若缓冲区的数据需要重新加载,可重新获取待写入数据,依据写指针变量,将重新获取的待写入数据加载至第二数据缓冲区。
为了更好理解本发明思想,作为示例地,下面结合图6进行说明:数据缓冲区的数据结构可以为数组、Vector、Map等。以数据结构Vector为例,数据缓冲区可划分为Active数据缓冲区和Inactive数据缓冲区,Active数据缓冲区和Inactive数据缓冲区的指针都为Vector类型的指针。
初始时,定义两个地址变量Addr1、Addr2,Addr1用来存储Active数据缓冲区的地址,这时用户可通过获取Active数据缓冲区的地址Addr1,读取Active数据缓冲区的数据;Addr2用来存储Inactive数据缓冲区的地址,用户同样可通过获取Inactive数据缓冲区的地址Addr2,加载数据到Inactive数据缓冲区。由于没有采取互斥锁方式,Active数据缓冲区和Inactive数据缓冲区的操作可并行进行。
在通过数据加载器加载数据时,首先需获取Inactive数据缓冲区的地址Addr2,然后根据该地址Addr2往Inactive数据缓冲区加载数据,直至数据加载完毕。
再定义一个地址变量Addr,将Active数据缓冲区的地址Addr1赋值给Addr,然后再将Inactive数据缓冲区的地址Addr2赋值给Addr1。这时候,用户在获取地址变量Addr1后读取数据时,读取的是Inactive数据缓冲区加载的数据。需要说明的是,地址的赋值操作为原子操作。
然后,当缓冲区的数据再次过期需要重新加载时,可将地址变量Addr的值赋值给地址变量Addr2,即地址变量Addr2指向的是Active数据缓冲区,这时候,数据加载将加载到Active数据缓冲区。为了节省Active数据缓冲区的内存空间,可将内存数据进行清空处理。
本实施例示出的数据加载方法,通过设置双数据缓冲区,在其中一数据缓冲区完成数据加载之后,进行地址切换处理;解决了现有技术中为了实现非阻塞式加载的互不冲突,需要采取互斥锁的方式,使得缓冲区数据的读取任务需要进行等待,进而造成用户体验感差的问题;达到了内存数据更新的目的,而不需要重新启动后台服务,避免了服务暂停,用户的体验感强。
请参考图2所示,本发明一示例性实施例还示出一种数据处理方法,该方法包括步骤:
201、获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据写指针变量将待写入数据加载至第一数据缓冲区。
202、将第二数据缓冲区的第一首地址值赋值给读指针变量,依据读指针变量读取第二数据缓冲区的数据。
需要说明的是,步骤201和步骤202中的数据加载操作和数据读取操作可以并行进行。
203、若待写入数据已经加载完毕,则将第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将第二首地址值赋值给写指针变量。
在该步骤中,通过将第一首地址值赋值给读指针变量,将第二首地址值赋值给写指针变量,实现了第一数据缓冲区和第二数据缓冲区的地址切换。需要说明的是,该步骤中的地址赋值操作为原子操作。
在本实施例中,第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。第一数据缓冲区和第二数据缓冲区都可用于数据加载和数据读取操作。具体地,第一数据缓冲区和第二数据缓冲区可以为内存当中的两块缓冲区。
在一种可选的实施例中,该方法还可包括步骤:
依据读指针变量,读取第一数据缓冲区的数据。
在本实施例中,当待写入数据已经加载完毕,且将第一数据缓冲区的第一首地址值赋值给读指针变量时,依据读指针变量,读取的是第一数据缓冲区的数据,即为加载至第一数据缓冲区的待写入数据。
在一种可选的实施例中,该方法还可包括步骤:
依据写指针变量,清空第二数据缓冲区的数据。
在本实施例中,依据写指针变量,清空第二数据缓冲区的数据,可节省数据缓冲区的内存空间。
在另一种可选的实施例中,该方法还可包括步骤:
重新获取待写入数据。
依据写指针变量,将重新获取的待写入数据加载至第二数据缓冲区。
在本实施例中,当获取第二数据缓冲区的第二首地址值,且将第二首地址值赋值给写指针变量时,若缓冲区的数据需要重新加载,可重新获取待写入数据,依据写指针变量,将重新获取的待写入数据加载至第二数据缓冲区。
为了更好理解本发明思想,作为示例地,下面结合图6进行说明:数据缓冲区的数据结构可以为数组、Vector、Map等。以数据结构Vector为例,数据缓冲区可划分为Active数据缓冲区和Inactive数据缓冲区,Active数据缓冲区和Inactive数据缓冲区的指针都为Vector类型的指针。
初始时,定义两个地址变量Addr1、Addr2,Addr1用来存储Active数据缓冲区的地址,这时用户可通过获取Active数据缓冲区的地址Addr1,读取Active数据缓冲区的数据;Addr2用来存储Inactive数据缓冲区的地址,用户同样可通过获取Inactive数据缓冲区的地址Addr2,加载数据到Inactive数据缓冲区。由于没有采取互斥锁方式,Active数据缓冲区和Inactive数据缓冲区的操作可并行进行。
在通过数据加载器加载数据时,首先需获取Inactive数据缓冲区的地址Addr2,然后根据该地址Addr2往Inactive数据缓冲区加载数据,直至数据加载完毕。
再定义一个地址变量Addr,将Active数据缓冲区的地址Addr1赋值给Addr,然后再将Inactive数据缓冲区的地址Addr2赋值给Addr1。这时候,用户在获取地址变量Addr1后读取数据时,读取的是Inactive数据缓冲区加载的数据。需要说明的是,地址的赋值操作为原子操作。
然后,当缓冲区的数据再次过期需要重新加载时,可将地址变量Addr的值赋值给地址变量Addr2,即地址变量Addr2指向的是Active数据缓冲区,这时候,数据加载将加载到Active数据缓冲区。为了节省Active数据缓冲区的内存空间,可将内存数据进行清空处理。
本实施例示出的数据加载方法,通过设置双数据缓冲区,在其中一数据缓冲区完成数据加载之后,进行地址切换处理;解决了现有技术中为了实现非阻塞式加载的互不冲突,需要采取互斥锁的方式,使得缓冲区数据的读取任务需要进行等待,进而造成用户体验感差的问题;达到了内存数据更新的目的,而不需要重新启动后台服务,避免了服务暂停,用户的体验感强。
请参考图3所示,本发明一示例性实施例还示出一种数据处理装置,该装置包括数据加载模块301、地址切换处理模块302及数据读取模块303;其中:
数据加载模块301,用于获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据写指针变量将待写入数据加载至第一数据缓冲区。
数据读取模块303,用于将第二数据缓冲区的第一首地址值赋值给读指针变量,依据读指针变量读取第二数据缓冲区的数据。
需要说明的是,数据加载模块301和数据读取模块303中的数据加载操作和数据读取操作可以并行进行。
地址切换处理模块302,用于若待写入数据已经加载完毕,则将第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将第二首地址值赋值给所述写指针变量。
通过将第一首地址值赋值给读指针变量,将第二首地址值赋值给写指针变量,实现了第一数据缓冲区和第二数据缓冲区的地址切换。需要说明的是,地址切换处理模块302中的地址赋值操作为原子操作。
在本实施例中,第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。第一数据缓冲区和第二数据缓冲区都可用于数据加载和数据读取操作。具体地,第一数据缓冲区和第二数据缓冲区可以为内存当中的两块缓冲区。
在一种可选的实施例中,数据读取模块303,还用于依据读指针变量,读取第一数据缓冲区的数据。
在本实施例中,当待写入数据已经加载完毕,且将第一数据缓冲区的第一首地址值赋值给读指针变量时,依据读指针变量,数据读取模块303读取的是第一数据缓冲区的数据,即为加载至第一数据缓冲区的待写入数据。
请参考图4所示,在一种可选的实施例中,该装置还可包括数据清空模块304;
数据清空模块304,用于依据写指针变量,清空第二数据缓冲区的数据。
在本实施例中,依据写指针变量,数据清空模块304清空第二数据缓冲区的数据,可节省数据缓冲区的内存空间。
在一种可选的实施例中,数据加载模块301,还用于重新获取待写入数据;依据写指针变量,将重新获取的待写入数据加载至第二数据缓冲区。
在本实施例中,当获取第二数据缓冲区的第二首地址值,且将第二首地址值赋值给写指针变量时,若缓冲区的数据需要重新加载,数据加载模块301可重新获取待写入数据,依据写指针变量,将重新获取的待写入数据加载至第二数据缓冲区。
为了更好理解本发明思想,作为示例地,下面结合图6进行说明:数据缓冲区的数据结构可以为数组、Vector、Map等。以数据结构Vector为例,数据缓冲区可划分为Active数据缓冲区和Inactive数据缓冲区,Active数据缓冲区和Inactive数据缓冲区的指针都为Vector类型的指针。
初始时,定义两个地址变量Addr1、Addr2,Addr1用来存储Active数据缓冲区的地址,这时用户可通过获取Active数据缓冲区的地址Addr1,读取Active数据缓冲区的数据;Addr2用来存储Inactive数据缓冲区的地址,用户同样可通过获取Inactive数据缓冲区的地址Addr2,加载数据到Inactive数据缓冲区。由于没有采取互斥锁方式,Active数据缓冲区和Inactive数据缓冲区的操作可并行进行。
在通过数据加载器加载数据时,首先需获取Inactive数据缓冲区的地址Addr2,然后根据该地址Addr2往Inactive数据缓冲区加载数据,直至数据加载完毕。
再定义一个地址变量Addr,将Active数据缓冲区的地址Addr1赋值给Addr,然后再将Inactive数据缓冲区的地址Addr2赋值给Addr1。这时候,用户在获取地址变量Addr1后读取数据时,读取的是Inactive数据缓冲区加载的数据。需要说明的是,地址的赋值操作为原子操作。
然后,当缓冲区的数据再次过期需要重新加载时,可将地址变量Addr的值赋值给地址变量Addr2,即地址变量Addr2指向的是Active数据缓冲区,这时候,数据加载将加载到Active数据缓冲区。为了节省Active数据缓冲区的内存空间,可将内存数据进行清空处理。
本实施例示出的数据处理装置,通过设置双数据缓冲区,在其中一数据缓冲区完成数据加载之后,进行地址切换处理;解决了现有技术中为了实现非阻塞式加载的互不冲突,需要采取互斥锁的方式,使得缓冲区数据的读取任务需要进行等待,进而造成用户体验感差的问题;达到了内存数据更新的目的,而不需要重新启动后台服务,避免了服务暂停,用户的体验感强。
请参考图5所示,本发明一示例性实施例还示出一种设备,该设备包括数据缓冲区403、指针变量402、程序存储器404及处理器401;
数据缓冲区403,包括第一数据缓冲区4031和第二数据缓冲区4032,用于数据的读取和加载,其中第一数据缓冲区4031与第二数据缓冲区4032为相对独立的数据缓冲区间。
指针变量402,包括读指针变量4021和写指针变量4022,用于存取第一数据缓冲区4031和第二数据缓冲区4032的首地址值。
处理器401,可用于执行程序存储器404存取的指令:
获取待写入数据,将第一数据缓冲区4031的第一首地址值赋值给写指针变量4022,依据写指针变量4022将待写入数据加载至第一数据缓冲区4031;
将第二数据缓冲区4032的第一首地址值赋值给读指针变量4021,依据读指针变量4021读取第二数据缓冲区4032的数据;
若待写入数据已经加载完毕,则将第一首地址值赋值给读指针变量4021,获取第二数据缓冲区4032的第二首地址值,将第二首地址值赋值给写指针变量4022,其中第一数据缓冲区4031与第二数据缓冲区4032为相对独立的数据缓冲区间。
在本实施例中,处理器401还可用于执行程序存储器404存取的指令:依据读指针变量4021,读取第一数据缓冲区4031的数据。
在本实施例中,处理器401还可用于执行程序存储器404存取的指令:依据写指针变量4022,清空第二数据缓冲区4032的数据。
在本实施例中,处理器401还可用于执行程序存储器404存取的指令:重新获取待写入数据;依据写指针变量4022,将重新获取的待写入数据加载至第二数据缓冲区4032。
本实施例示出的设备,通过设置双数据缓冲区,在其中一数据缓冲区完成数据加载之后,进行地址切换处理;解决了现有技术中为了实现非阻塞式加载的互不冲突,需要采取互斥锁的方式,使得缓冲区数据的读取任务需要进行等待,进而造成用户体验感差的问题;达到了内存数据更新的目的,而不需要重新启动后台服务,避免了服务暂停,用户的体验感强。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
尽管已经参照示例性实施例描述了本发明,但本领域技术人员应当理解,在不脱离本发明的范围的情况下,可以做出各种变化并且可以用等同物替换它的单元。另外,在不脱离本发明的基本范围的情况下,可以对本发明的教导做出许多修改以适应特定的系统、设备或它的组件。因此,这意味着本发明并不限于所公开的用于实现本发明的特定实施例,而是本发明将包括落入后附的权利要求的范围内的所有实施例。另外,第一、第二等术语的使用并非表示任何顺序或重要性,而是用于区分一个单元和另一个单元。
在此所使用的术语仅仅是用于描述特定实施例的目的,并不意味着限制本发明。如在此所使用的,单数形式“一”、“一个”和“该”意在也包括复数形式,除非上下文明确指示。还应当理解,术语“包括”和/或“包含”在被用在本说明书中时是指存在所述的特征、整体、步骤、操作、单元和/或组件,但没有排除存在或添加一个或多个其它特征、整体、步骤、操作,单元、组件和/或它们的组合。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据加载方法,其特征在于,所述方法包括:
获取待写入数据;
将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
2.根据权利要求1所述的一种数据加载的方法,其特征在于,所述方法还包括:
依据所述读指针变量,读取所述第一数据缓冲区的数据。
3.根据权利要求1所述的一种数据加载的方法,其特征在于,所述方法还包括:
依据所述写指针变量,清空所述第二数据缓冲区的数据。
4.根据权利要求1-3任一所述的一种数据加载的方法,其特征在于,所述方法还包括:
重新获取待写入数据;
依据所述写指针变量,将所述重新获取的待写入数据加载至所述第二数据缓冲区。
5.一种数据处理方法,其特征在于,所述方法包括:
获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
将第二数据缓冲区的第一首地址值赋值给读指针变量,依据所述读指针变量读取所述第二数据缓冲区的数据;
若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
6.根据权利要求5所述的一种数据处理的方法,其特征在于,所述方法还包括:
依据所述读指针变量,读取所述第一数据缓冲区的数据。
7.根据权利要求5所述的一种数据处理的方法,其特征在于,所述方法还包括:
依据所述写指针变量,清空所述第二数据缓冲区的数据。
8.根据权利要求5-7任一所述的一种数据处理的方法,其特征在于,所述方法还包括:
重新获取待写入数据;
依据所述写指针变量,将所述重新获取的待写入数据加载至所述第二数据缓冲区。
9.一种数据处理装置,其特征在于,所述装置包括数据加载模块、地址切换处理模块及数据读取模块;其中
所述数据加载模块,用于获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
所述数据读取模块,用于将第二数据缓冲区的第一首地址值赋值给读指针变量,依据所述读指针变量读取所述第二数据缓冲区的数据;
所述地址切换处理模块,用于若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量;
其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
10.根据权利要求9所述的一种数据处理装置,其特征在于,所述数据读取模块,还用于依据所述读指针变量,读取所述第一数据缓冲区的数据。
11.根据权利要求9所述的一种数据处理装置,其特征在于,所述装置还包括数据清空模块;
所述数据清空模块,用于依据所述写指针变量,清空所述第二数据缓冲区的数据。
12.根据权利要求9-11所述的一种数据处理装置,其特征在于,所述数据加载模块,还用于重新获取待写入数据;依据所述写指针变量,将所述重新获取的待写入数据加载至所述第二数据缓冲区。
13.一种设备,其特征在于,所述设备包括数据缓冲区、指针变量、程序存储器及处理器;
所述数据缓冲区,包括第一数据缓冲区和第二数据缓冲区,用于数据的读取和加载,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间;
所述指针变量,包括读指针变量和写指针变量,用于存取所述第一数据缓冲区和所述第二数据缓冲区的首地址值;
所述处理器,用于执行所述程序存储器存取的指令:
获取待写入数据,将第一数据缓冲区的第一首地址值赋值给写指针变量,依据所述写指针变量将所述待写入数据加载至所述第一数据缓冲区;
将第二数据缓冲区的第一首地址值赋值给读指针变量,依据所述读指针变量读取所述第二数据缓冲区的数据;
若所述待写入数据已经加载完毕,则将所述第一首地址值赋值给读指针变量,获取第二数据缓冲区的第二首地址值,将所述第二首地址值赋值给所述写指针变量,其中所述第一数据缓冲区与第二数据缓冲区为相对独立的数据缓冲区间。
14.根据权利要求13所述的一种设备,其特征在于,所述处理器,还可用于执行所述程序存储器存取的指令:依据所述读指针变量,读取所述第一数据缓冲区的数据。
15.根据权利要求13所述的一种设备,其特征在于,所述处理器,还可用于执行所述程序存储器存取的指令:依据所述写指针变量,清空所述第二数据缓冲区的数据。
16.根据权利要求13-15任一所述的一种设备,其特征在于,所述处理器,还可用于执行所述程序存储器存取的指令:重新获取待写入数据;依据所述写指针变量,将所述重新获取的待写入数据加载至所述第二数据缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611100826.0A CN108153679A (zh) | 2016-12-05 | 2016-12-05 | 一种数据加载、数据处理的方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611100826.0A CN108153679A (zh) | 2016-12-05 | 2016-12-05 | 一种数据加载、数据处理的方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108153679A true CN108153679A (zh) | 2018-06-12 |
Family
ID=62469661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611100826.0A Pending CN108153679A (zh) | 2016-12-05 | 2016-12-05 | 一种数据加载、数据处理的方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153679A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271193A (zh) * | 2018-10-08 | 2019-01-25 | 广州市百果园信息技术有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585373A (zh) * | 2004-05-28 | 2005-02-23 | 中兴通讯股份有限公司 | 一种乒乓缓冲装置 |
CN101026540A (zh) * | 2006-12-28 | 2007-08-29 | 复旦大学 | 智能多缓冲区管理的集中调度控制器和动态调度方法 |
CN104702921A (zh) * | 2013-12-09 | 2015-06-10 | 中国航空工业集团公司第六三一研究所 | 一种基于fc-av协议的帧接收控制电路及方法 |
CN104796652A (zh) * | 2015-01-12 | 2015-07-22 | 北京瀚景锦河科技有限公司 | 一种基于srio传输视频帧的数据传输方法和装置 |
CN105589820A (zh) * | 2015-12-22 | 2016-05-18 | 中国科学院微电子研究所 | 一种数据传输缓冲装置 |
CN105635909A (zh) * | 2015-12-23 | 2016-06-01 | 深圳市东微智能科技有限公司 | 一种fpga大型音频通道路由矩阵及其路由方法 |
CN105872432A (zh) * | 2016-04-21 | 2016-08-17 | 天津大学 | 快速自适应帧率变换的装置与方法 |
-
2016
- 2016-12-05 CN CN201611100826.0A patent/CN108153679A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585373A (zh) * | 2004-05-28 | 2005-02-23 | 中兴通讯股份有限公司 | 一种乒乓缓冲装置 |
CN101026540A (zh) * | 2006-12-28 | 2007-08-29 | 复旦大学 | 智能多缓冲区管理的集中调度控制器和动态调度方法 |
CN104702921A (zh) * | 2013-12-09 | 2015-06-10 | 中国航空工业集团公司第六三一研究所 | 一种基于fc-av协议的帧接收控制电路及方法 |
CN104796652A (zh) * | 2015-01-12 | 2015-07-22 | 北京瀚景锦河科技有限公司 | 一种基于srio传输视频帧的数据传输方法和装置 |
CN105589820A (zh) * | 2015-12-22 | 2016-05-18 | 中国科学院微电子研究所 | 一种数据传输缓冲装置 |
CN105635909A (zh) * | 2015-12-23 | 2016-06-01 | 深圳市东微智能科技有限公司 | 一种fpga大型音频通道路由矩阵及其路由方法 |
CN105872432A (zh) * | 2016-04-21 | 2016-08-17 | 天津大学 | 快速自适应帧率变换的装置与方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271193A (zh) * | 2018-10-08 | 2019-01-25 | 广州市百果园信息技术有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN109271193B (zh) * | 2018-10-08 | 2023-01-13 | 广州市百果园信息技术有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170308369A1 (en) | Data processing method and device of preset application after upgrading | |
US20100268867A1 (en) | Method and apparatus for updating firmware as a background task | |
CN103154900A (zh) | 编入程序更新方法、编入程序更新程序、电子设备、网络系统 | |
KR20100088210A (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
CN107911741A (zh) | 可用存储空间提升方法、智能电视及计算机可读存储介质 | |
CN107562483A (zh) | 一种挂载引导文件系统的方法及装置 | |
CN108073507A (zh) | 一种内核崩溃现场数据的处理方法及装置 | |
CN106649654A (zh) | 一种数据更新的方法和装置 | |
CN111104178A (zh) | 一种动态库加载方法、终端装置及存储介质 | |
US8131917B2 (en) | Storing a driver for controlling a memory | |
CN108153679A (zh) | 一种数据加载、数据处理的方法、装置及设备 | |
US7681009B2 (en) | Dynamically updateable and moveable memory zones | |
CN101908009B (zh) | 文件备份与使用方法 | |
CN100573450C (zh) | 在具有与非闪速存储器的系统执行应用程序的方法和设备 | |
CN109358811A (zh) | 存储设备管理方法、装置及可读存储介质 | |
US9857864B1 (en) | Systems and methods for reducing power consumption in a memory architecture | |
KR20100050098A (ko) | 영상처리장치 및 그 제어 방법 | |
CN101107591B (zh) | 计算机系统和用于启动其中的基本程序的方法 | |
US11204700B2 (en) | Data storage device and non-volatile memory control method, with security extension | |
CN100365572C (zh) | 软件封装方法 | |
KR101273914B1 (ko) | 플랫폼 라이브러리 다이나믹 링킹기능이구비된 단말장비 및 그 제어방법 | |
CN108304200B (zh) | 一种驱动程序升级的方法、装置以及电子设备 | |
CN111831349A (zh) | 移动装置及其数据共享方法 | |
US11907761B2 (en) | Electronic apparatus to manage memory for loading data and method of controlling the same | |
US7783874B2 (en) | Method for initiating system |
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 |