掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及数据处理领域,特别是涉及一种资源处理方法及装置。

背景技术

目前,可以通过给资源加锁的方式避免资源生产者和资源消费者之间的资源竞争。其中,资源生产者可以是对资源执行写操作的线程,资源消费者可以是对资源执行读操作的线程。具体地,无论是资源生产者还是资源消费者,在对资源执行相应的操作之前,都需要对该资源进行加锁。

但是,对资源进行加锁会降低计算机程序的性能。

发明内容

本申请所要解决的技术问题是:对资源进行加锁会降低计算机程序的性能,提供一种资源处理方法及装置。

第一方面,本申请实施例提供了一种资源处理方法,所述方法包括:

在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新;其中,所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一资源对应的备份资源确定所述第一资源是否需要更新,包括:

获取所述备份资源的第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述方法还包括:

在第二线程请求对所述第一资源执行写操作时,对所述备份资源加锁;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

第二方面,本申请实施例提供了一种资源处理方法,所述方法包括:

在第二线程请求对第一资源执行写操作时,对所述第一资源的备份资源加锁,其中:所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述方法还包括:

在第一线程请求读取所述第一资源时,根据所述第一标记确定所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一标记确定所述第一资源是否需要更新,包括:

获取所述第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

第三方面,本申请实施例提供了一种资源处理装置,所述装置包括:

确定单元,用于在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新;其中,所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

第一读取单元,用于若确定所述第一资源无需更新,直接读取所述第一资源;

更新单元,用于若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新;

第二读取单元,用于读取更新后的所述第一资源。

可选的,所述确定单元,用于:

获取所述备份资源的第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述装置还包括:

加锁单元,用于在第二线程请求对所述第一资源执行写操作时,对所述备份资源加锁;

操作单元,用于对所述备份资源执行写操作;

解锁单元,用于在所述写操作执行完成之后对所述备份资源解锁;

设置单元,用于将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述更新单元,用于:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述更新单元,用于:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

第四方面,本申请实施例提供了一种资源处理装置,所述装置包括:

加锁单元,用于在第二线程请求对第一资源执行写操作时,对所述第一资源的备份资源加锁,其中:所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

操作单元,用于对所述备份资源执行写操作;

解锁单元,用于在所述写操作执行完成之后对所述备份资源解锁;

设置单元,用于将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述装置还包括:

确定单元,用于在第一线程请求读取所述第一资源时,根据所述第一标记确定所述第一资源是否需要更新;

第一读取单元,用于若确定所述第一资源无需更新,直接读取所述第一资源;

更新单元,用于若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新;

第二读取单元,用于读取更新后的所述第一资源。

可选的,所述确定单元,用于:

获取所述第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述确定单元,用于:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述更新单元,用于:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

第五方面,本申请实施例提供了一种资源处理装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新;其中,所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一资源对应的备份资源确定所述第一资源是否需要更新,包括:

获取所述备份资源的第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述操作还包括:

在第二线程请求对所述第一资源执行写操作时,对所述备份资源加锁;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

第六方面,本申请实施例提供了一种资源处理装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

在第二线程请求对第一资源执行写操作时,对所述第一资源的备份资源加锁,其中:所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述操作还包括:

在第一线程请求读取所述第一资源时,根据所述第一标记确定所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一标记确定所述第一资源是否需要更新,包括:

获取所述第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

第七方面,本申请实施例提供了一种计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行以上第一方面任意一项所述的方法。

第八方面,本申请实施例提供了一种计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行以上第二方面任意一项所述的方法。

与现有技术相比,本申请实施例具有以下优点:

本申请实施例提供了一种资源处理方法,具体地:第一资源具备对应的备份资源,该备份资源时预先创建的,所述备份资源具备第一标记,第一标记的值用于指示第一资源是否需要更新。在第一线程请求读取第一资源时,可以根据所述第一标记的值确定第一资源是否需要更新。若确定所述第一资源无需更新,则无需对所述第一资源进行加锁,直接读取所述第一资源。若确定所述第一资源需要更新,也无需对第一资源进行加锁,直接对所述第一资源进行更新并读取更新后的所述第一资源。由此可见,利用本方案,在第一线程请求读取第一资源时,无需像现有技术中那样对第一资源进行加锁,从而提升了计算机程序的性能。

本申请实施例还提供了一种资源处理方法,具体地:第一资源具备对应的备份资源,该备份资源是预先创建的,所述备份资源具备第一标记,第一标记的值用于指示第一资源是否需要更新。在第二线程请求对第一资源执行写操作时,对第一资源的备份资源加锁,而后,对所述备份资源执行写操作,在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。由于在本申请中,对第一资源的写操作被转移至备份资源上,因此,在对备份资源执行写操作时,无需对第一资源加锁,相应的,其它线程例如第一线程可以对第一资源执行读操作。如此一来,对第一资源的读操作和对备份资源的写操作可以同时执行,从而提升了计算机程序的性能。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种资源处理方法的流程示意图;

图2a为本申请实施例提供的一种资源处理装置的结构示意图;

图2b为本申请实施例提供的一种资源处理装置的结构示意图;

图3为本申请实施例提供的客户端的结构示意图;

图4为本申请实施例提供的服务器的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的发明人经过研究发现,无论是资源生产者还是资源消费者,在对资源执行相应的操作之前,都需要对该资源进行加锁。为方便描述,将为资源添加的锁称为“资源锁”。资源锁可以包括互斥锁和读写锁,读写锁又可以包括读锁和写锁,当对资源执行读操作时,需要为资源添加读锁,当对资源执行写操作时,需要为资源添加写锁。

若资源锁为互斥锁,则该资源在同一时刻只能被一个线程占用。举例说明:线程A在对资源a执行读操作或者写操作之前,为资源a添加了互斥锁,则只有线程A对该资源a执行解锁操作(即解锁该互斥锁)之后,其它线程才能对该资源a执行相应的操作。因此,若利用互斥锁对资源加锁,则会导致资源使用的串行性,即:一个线程只能等待另一个线程对该资源解锁之后才能操作该资源,相应的降低了计算机程序的性能。

对于读锁而言,多个线程可以同时为该资源添加读锁,即,多个线程可以同时对该资源执行读操作。但是添加读锁本身的效率比较低,相应也会降低了计算机程序的性能。

对于写锁而言,其与互斥锁类似,若资源被一个线程添加了写锁,则其它线程若需要对该资源执行读操作或者写操作,必须等待该写锁被解锁。因此,若为资源添加写锁,则会导致资源使用的串行性,即:一个线程只能等待另一个线程对该写锁解锁之后才能操作该资源,相应的降低了计算机程序的性能。

通过以上描述可知,目前,对于一个线程而言,无论该线程对资源执行的是读操作还是写操作,该线程在对资源进行操作之前,都需要对该资源进行加锁。无论给资源加锁使用的是互斥锁还是读写锁,均会降低计算机程序的性能。

为了解决上述问题,本申请实施例提供了一种资源处理方法及装置。

下面结合附图,详细说明本申请的各种非限制性实施方式。

参见图1,该图为本申请实施例提供的一种资源处理方法的流程示意图。

本申请实施例提供的资源处理方法,可以由具备数据处理功能的控制器或者处理器执行,也可以由包括前述控制器或者处理器的设备执行,本申请实施例不具体限定。其中,包括控制器或者处理器的设备包括但不限于终端设备以及服务器。

在本实施例中,图1所示的资源处理方法例如可以包括以下步骤S101-S103。

S101:在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新。

此处提及的第一资源,可以是共享资源,即多个线程均具备对该第一资源的操作权限。在一个示例中,所述第一资源可以具备多个生产者、一个消费者,换言之,能够对第一资源执行写操作的线程可以有多个,而对所述第一资源执行读操作的线程只有一个。举例说明,第一资源为实现某一功能的配置信息,多个线程均可以对该配置信息进行修改,即多个线程均可以对该配置信息执行写操作。但是,有且仅有一个线程能够读取该配置信息,即:有且仅有一个线程能够对该配置信息执行读操作。此处提及的第一线程,可以是唯一能够对该第一资源执行读操作的线程。

在本申请实施例的一种实现方式中,对于第一资源而言,可以为第一资源创建备份资源。考虑到对于第一资源而言,有的线程希望对第一资源执行读操作,有的线程希望对第一资源执行写操作。若同一时刻第一线程请求对第一资源执行读操作、而第二线程请求对第一资源执行写操作,则对第一资源的读写操作无法同时执行。为了避免这个问题,在一种实现方式中,若第二线程请求对第一资源执行写操作,则针对所述备份资源执行写操作,此时,第一线程仍然可以对第一资源执行读操作。采用这种方式相较于前述为资源添加互斥锁的方案而言,第一线程读取第一资源和第二线程对第一资源的备份资源执行写操作可以同时执行,从而提升了并发性。

在一些实施例中,考虑到能够对所述备份资源执行写操作的线程除了包括第二线程之外,还可以包括其它线程,例如第三线程。为了避免多个线程同时对所述备份资源执行写操作,在基于第二线程的请求对所述备份资源进行写操作之前,可以对所述备份资源加锁,而后,对所述备份资源执行写操作,在所述写操作执行完成之后对所述备份资源解锁。

可以理解的是,所述备份资源是所述第一资源的备份,原则上所述第一资源和所述备份资源应该时刻保持相同。因此,在基于第二线程的请求对所述备份资源执行写操作之后,应当对所述第一资源进行更新,使得更新后的第一资源与前述执行写操作之后的备份资源保持一致。为了达到这一效果,在一个示例中,可以为所述备份资源设置一个第一标记,第一标记的值用于指示第一资源是否需要更新。在一个示例中,当所述第一标记的值为第一值时,指示第一资源无需更新,当所述第一标记的值为第二值时,指示第一资源需要更新。其中,第一值和第二值不同。本申请实施例不具体限定所述第一值和第二值,在一个示例中,所述第一标记为布尔型数据,则第一值例如可以为0,第二值可以为1。可以理解的是,若所述备份资源与所述第一资源不同,则所述第一资源需要更新。例如,所述备份资源被执行了写操作,则所述第一资源需要更新。对于这种情况,在对所述备份资源执行写操作之后,还可以将所述第一标记的值设置为前述第二值,以指示所述第一资源需要更新。

在本申请实施例的一种实现方式中,S101中“确定所述第一资源是否需要更新”在具体实现时,可以读取所述第一资源和所述备份资源,并确定所述第一资源和所述备份资源是否一致,若一致,则确定所述第一资源无需更新,若不一致,则确定所述第一资源需要更新。可以理解的是,读取所述备份资源时,为了避免其它线程同时对该备份资源执行写操作,需要对所述备份资源加锁,从而导致资源使用的串行性,相应降低计算机程序的性能。

在本申请实施例的又一种实现方式中,S101中“确定所述第一资源是否需要更新”在具体实现时,可以根据前述第一标记的值,确定所述第一资源是否需要更新。在一个示例中,若所述第一标记的值为第一值,则可以确定所述第一资源无需更新,若所述第一标记的值为第二值,则可以确定所述第一资源需要更新。可以理解的是,采用这种方式,无需对备份资源进行加锁,从而提升了资源使用的并行性,相应提升了计算机程序的性能。

S102:若确定所述第一资源无需更新,直接读取所述第一资源。

可以理解的是,在前述多生产者单消费者的场景中,能够读取所述第一资源的线程仅包括所述第一线程,而且,也不会有其它线程对所述第一资源执行写操作,因为原本针对第一资源的写操作被转移至所述备份资源上了。换言之,除了第一线程之外,不会有其它线程会操作所述第一资源。因此,在本申请实施例中,在确定所述第一资源无需更新之后,可以无需对所述第一资源进行加锁,而是直接读取所述第一资源。这样一来,可以减少对第一资源加锁而消耗的计算机资源,并提升第一资源使用的并行性,相应的提升了计算机程序的性能。

S103:若确定第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

如上S102中所述,除了第一线程之外,不会有其它线程会操作所述第一资源。因此,在本申请实施例中,在确定所述第一资源需要更新之后,可以无需对所述第一资源进行加锁,而是直接对所述第一资源进行更新,并读取更新后的所述第一资源。

可以理解的是,之所以需要对第一资源进行更新,是因为第一资源的备份资源被执行了写操作,从而使得备份资源和第一资源不一致。因此,在一个示例中,可以读取所述备份资源,并利用所读取的备份资源对第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同。如前所述,能够对所述备份资源执行写操作的线程除了包括第二线程之外,还可以包括其它线程。为了避免在读取所述备份资源的同时其它线程对所述备份资源执行写操作,在读取所述备份资源之前,可以对所述备份资源加锁,相应的,读取所述备份资源之后,可以对所述备份资源解锁。

在一种实现方式中,对第一资源进行更新之后,还可以将所述第一标记的值设置为第一值,以指示第一资源和所述备份资源一致,即第一资源无需再进行更新。相应的,若第一线程再次请求读取第一资源,则可以基于该第一值确定第一资源无需更新,故而可以直接读取该第一资源。

通过以上描述可知,利用本方案,在第一线程请求读取第一资源时,无需像现有技术中那样,对第一资源进行加锁,从而减少了对第一资源加锁而消耗的计算机资源,提高了资源使用的并行性,相应的提升了计算机程序的性能。而且,第一线程请求读取第一资源的频率越高,本方案相较于现有技术而言,计算机程序性能的提升也会越明显。

为方便理解本方案,接下来对针对第一资源的读操作和写操作的整体流程进行简单介绍。

首先,对针对第一资源执行写操作的整体流程进行介绍,该流程可以包括如下步骤A1至步骤A2。

步骤A1:在第二线程请求对第一资源执行写操作时,对预先创建的备份资源加锁,并对所述备份资源执行写操作。

需要说明的是,本申请实施例中,需要预先为第一资源创建备份资源。

在本申请实施例中,对第一资源的写操作不直接针对第一资源本身执行,而是针对第一资源的备份资源执行。

因此,在第二线程请求对第一资源执行写操作时,所述第一资源不加锁,仅对所述备份资源加锁即可。此处对备份资源添加的锁可以是互斥锁,也可以是读写锁,本申请实施例不具体限定。

对备份资源执行写操作之后,所述备份资源的值更新为最新值。

步骤A2:在所述写操作执行完成之后,将所述备份资源的第一标记的值设置为用于指示需要更新的第二值,并对所述备份资源解锁。其中,所述备份资源的第一标记用于指示第一资源是否需要更新。

可以理解的是,请求对第一资源执行写操作的线程除了第二线程之外,还可以包括其它线程。对于其它线程对所述备份资源执行写操作的实现方式,可以参考上述步骤实现,此处不一一详细说明。

接下来,对针对第一资源执行读操作的整体流程进行介绍,该流程可以包括如下步骤:

步骤B1:在第一线程请求读取第一资源时,根据第一资源对应的备份资源的第一标记的值,确定第一资源是否需要更新。

步骤B2:若确定所述第一资源无需更新,直接读取所述第一资源。

步骤B3:若确定所述第一资源需要更新,则对所述备份资源加锁,读取所述备份资源的值,并在读取之后将所述第一标记的值设置为用于指示不需要更新的第一值,并对所述备份资源解锁;利用读取的所述备份资源的值对第一资源进行更新,使得更新后的第一资源的值等于所述备份资源的值;读取更新后的所述第一资源。

需要说明的是,在步骤B3中,对所述备份资源加锁后,还可以直接利用所述备份资源的值对第一资源进行更新,使得更新后的第一资源的值等于所述备份资源的值;然后将所述备用资源的第一标记的值设置为用于指示不需要更新的第一值,并对所述备份资源解锁;最后读取更新后的所述第一资源。

关于步骤B1~B3的具体实现,可以参考前文对于S101-S103的描述部分,此处不再重复描述。

需要说明的是,在一些实施例中,对第一资源的备份资源的写操作可能比较频繁,例如,第二线程、第三线程甚至第四线程相继对所述备份资源执行了写操作,而在此过程中,第一线程并未请求读取第一资源。虽然原则上所述第一资源应当与所述备份资源保持一致。但是,如前文,对第一资源进行更新需要对所述备份资源加锁,而频繁的对备份资源加锁也会影响计算机程序的性能。因此,在本申请实施例中,并不是每次对备份资源执行写操作之后,都需要对第一资源进行更新,而是每次对备份资源执行写操作之后,都将所述第一标记的值设置为第二值,在第一线程请求读取第一资源时,根据所述第二值对所述第一资源进行更新。对于这种情况,在第一线程请求读取第一资源之前,无论对所述备份资源执行了多少次写操作,均只需要在第一线程请求读取第一资源时更新一次第一资源,从而有效提升了计算机程序的性能。需要说明的是,前述提及的“每次对备份资源执行写操作之后,都将所述第一标记的值设置为第二值”可以包括两种情况。第一种情况是:在执行所述写操作之前,所述第一标记的值为用于指示不需要更新的第一值,执行写操作之后,将所述第一标记的值由第一值修改为用于指示需要更新的第二值;第二种情况是:在执行所述写操作之前,所述第一标记的值原本就是第二值,执行写操作之后,所述第一标记的值还是第二值。

基于以上实施例提供的方法,本申请实施例还提供了对应的装置,以下结合附图介绍该装置。

参见图2a,该图为本申请实施例提供的一种资源处理装置的结构示意图。图2a所示的装置210例如可以具体包括:确定单元211、第一读取单元212、更新单元213和第二读取单元214。

确定单元211,用于在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新;其中,所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

第一读取单元212,用于若确定所述第一资源无需更新,直接读取所述第一资源;

更新单元213,用于若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新;

第二读取单元214,用于读取更新后的所述第一资源。

可选的,所述确定单元211,用于:

获取所述备份资源的第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述装置还包括:

加锁单元,用于在第二线程请求对所述第一资源执行写操作时,对所述备份资源加锁;

操作单元,用于对所述备份资源执行写操作;

解锁单元,用于在所述写操作执行完成之后对所述备份资源解锁;

设置单元,用于将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述更新单元213,用于:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述更新单元213,用于:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

参见图2b,该图为本申请实施例提供的一种资源处理装置的结构示意图。图2b所示的装置220例如可以具体包括:加锁单元221、读取单元222、解锁单元223和设置单元224。

加锁单元221,用于在第二线程请求对第一资源执行写操作时,对所述第一资源的备份资源加锁,其中:所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

操作单元222,用于对所述备份资源执行写操作;

解锁单元223,用于在所述写操作执行完成之后对所述备份资源解锁;

设置单元224,用于将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述装置还包括:

确定单元,用于在第一线程请求读取所述第一资源时,根据所述第一标记确定所述第一资源是否需要更新;

第一读取单元,用于若确定所述第一资源无需更新,直接读取所述第一资源;

更新单元,用于若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新;

第二读取单元,用于读取更新后的所述第一资源。

可选的,所述确定单元,用于:

获取所述第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述确定单元,用于:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述更新单元,用于:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

由于所述装置210和220是与以上方法实施例提供的方法对应的装置,所述装置210和220的各个单元的具体实现,均与以上方法实施例为同一构思,因此,关于所述装置210和220的各个单元的具体实现,可以参考以上方法实施例的描述部分,此处不再赘述。

本申请实施例提供的方法,可以由客户端执行也可以由服务器执行,以下对执行上述方法的客户端和服务器分别进行说明。

图3示出了一种客户端300的框图。例如,客户端300可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图3,客户端300可以包括以下一个或多个组件:处理组件302,存储器304,电源组件306,多媒体组件308,音频组件310,输入/输出(I/O)的接口33,传感器组件314,以及通信组件316。

处理组件302通常控制客户端300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件302可以包括一个或多个处理器320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件302可以包括一个或多个模块,便于处理组件302和其他组件之间的交互。例如,处理部件302可以包括多媒体模块,以方便多媒体组件308和处理组件302之间的交互。

存储器304被配置为存储各种类型的数据以支持在客户端300的操作。这些数据的示例包括用于在客户端300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件306为客户端300的各种组件提供电力。电源组件306可以包括电源管理系统,一个或多个电源,及其他与为客户端300生成、管理和分配电力相关联的组件。

多媒体组件308包括在所述客户端300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件308包括一个前置摄像头和/或后置摄像头。当客户端300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件310被配置为输出和/或输入音频信号。例如,音频组件310包括一个麦克风(MIC),当客户端300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器304或经由通信组件316发送。在一些实施例中,音频组件310还包括一个扬声器,用于输出音频信号。

I/O接口为处理组件302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件314包括一个或多个传感器,用于为客户端300提供各个方面的状态评估。例如,传感器组件314可以检测到设备300的打开/关闭状态,组件的相对定位,例如所述组件为客户端300的显示器和小键盘,传感器组件314还可以检测客户端300或客户端300一个组件的位置改变,用户与客户端300接触的存在或不存在,客户端300方位或加速/减速和客户端300的温度变化。传感器组件314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件316被配置为便于客户端300和其他设备之间有线或无线方式的通信。客户端300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在一个示例性实施例中,客户端300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行下述方法:

在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新;其中,所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一资源对应的备份资源确定所述第一资源是否需要更新,包括:

获取所述备份资源的第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述方法还包括:

在第二线程请求对所述第一资源执行写操作时,对所述备份资源加锁;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

在又一个示例性实施例中,客户端300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行下述方法:

在第二线程请求对第一资源执行写操作时,对所述第一资源的备份资源加锁,其中:所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述方法还包括:

在第一线程请求读取所述第一资源时,根据所述第一标记确定所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一标记确定所述第一资源是否需要更新,包括:

获取所述第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

图4是本申请实施例中服务器的结构示意图。该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上执行存储介质430中的一系列指令操作。

更进一步地:

在一个示例中,中央处理器422可以执行下述方法:

在第一线程请求读取第一资源时,根据所述第一资源对应的备份资源确定所述第一资源是否需要更新;其中,所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一资源对应的备份资源确定所述第一资源是否需要更新,包括:

获取所述备份资源的第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述方法还包括:

在第二线程请求对所述第一资源执行写操作时,对所述备份资源加锁;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

在又一个示例中,中央处理器422可以执行下述方法:

在第二线程请求对第一资源执行写操作时,对所述第一资源的备份资源加锁,其中:所述备份资源为预先创建的,所述备份资源配置有第一标记,所述第一标记用于指示所述第一资源是否需要更新;

对所述备份资源执行写操作;

在所述写操作执行完成之后对所述备份资源解锁,并将所述第一标记的值设置为用于指示需要更新的第二值。

可选的,所述方法还包括:

在第一线程请求读取所述第一资源时,根据所述第一标记确定所述第一资源是否需要更新;

若确定所述第一资源无需更新,直接读取所述第一资源;

若确定所述第一资源需要更新,则利用所述备份资源对所述第一资源进行更新并读取更新后的所述第一资源。

可选的,所述根据所述第一标记确定所述第一资源是否需要更新,包括:

获取所述第一标记的值;

当所述第一标记的值为用于指示不需要更新的第一值时,确定所述第一资源无需更新;当所述第一标记的值为用于指示需要更新的第二值时,确定所述第一资源需要更新,所述第一值与所述第二值不同。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,读取所述备份资源后,对所述备份资源进行解锁;

利用读取的所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

可选的,所述利用所述备用资源对所述第一资源进行更新,包括:

对所述备份资源加锁,利用所述备份资源对所述第一资源进行更新,使得更新后的所述第一资源与所述读取的所述备份资源相同,对所述备份资源进行解锁;

将所述备份资源的第一标记的值设置为用于指示不需要更新的第一值。

服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口456,一个或一个以上键盘456,和/或,一个或一个以上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

本申请实施例还提供了一种计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行以上方法实施例提供的资源处理方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种资源处理方法、装置、资源处理设备及存储介质
  • 视频资源预处理方法及装置、视频资源下载方法及装置
技术分类

06120112607886