具体实施方式
现在将参考各实施例讨论本文描述的主题。应当理解的是,讨论这些实施例仅是为了使得本领域技术人员能够更好地理解并且实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离权利要求书的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个实施例可以根据需要,省略、替换或者添加各种过程或组件。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其它实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其它的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
在分布式或集群环境中,多个主机可以共享某些存储资源。例如,为了实现计算存储分离,可以通过分布在集群中的多个主机处的存储单元来构建存储资源池,使得该存储资源池对于这多个主机而言是共享的。在这种情况下,通常需要使用锁机制来确保多个主机对共享存储资源的访问互斥性,以保证操作一致性。
然而,传统的锁机制存在一些性能瓶颈,例如延时大、加锁和解锁代价较高等等,因此传统的锁机制并不太适用于上述场景。
如所已知的,RDMA技术可以直接访问内存中的数据,而不需要操作***和中央处理器(Central Processing Unit,CPU)的参与,从而能够极大地降低处理时延。因此,本说明书提供了一种用于基于RDMA技术来实现锁机制的技术方案。
在该技术方案中,共享存储资源可以由第一主机和至少一个其它主机共享,比如可以至少由第一主机和第二主机共享。第一主机和至少一个其它主机可以是以分布式或集群方式来部署的。共享存储资源可以包括各种适用类型的存储介质。
此外,可以设置锁资源(比如变量),以避免多个主机对共享存储资源同时操作而造成数据不一致。比如,至少两个主机同时对共享存储资源进行写操作;或者,一个主机对共享存储资源进行写操作,而另一主机同时对共享存储资源进行读操作等等。这些同时操作可能会造成共享存储资源的数据不一致。因此,锁资源可以用于实现对共享存储资源的加锁或解锁,使得共享存储资源不会被同时操作。锁资源可以设置在多个主机中的一个主机处。在本文中,为了便于描述,可以假设锁资源被设置在第一主机处。
当某个主机(例如,至少一个其它主机之一或第一主机)要对共享存储资源进行操作时,可以首先获取锁资源。例如,其可以通过第一主机的网卡来获取设置在第一主机处的锁资源。在该主机对共享存储资源进行操作之后,可以通过第一主机的网卡来释放锁资源。可以理解的是,获取锁资源可以理解为对共享存储资源加锁,而释放锁资源可以理解为对共享存储资源解锁。
在本文中,第一主机的网卡可以实现RDMA技术。例如,第一主机的网卡可以是RDMA网卡,或者可以是具有可编程功能的智能网卡。因此,利用第一主机的网卡,能够高效地获取锁资源和释放锁资源,延时小,从而使得各个主机能够高效地访问共享存储资源。可见,该技术方案能够实现用于分布式或集群环境的高效锁机制。
下面将结合具体实施例来描述本说明书的技术方案。
图1是根据一个实施例的用于实现锁资源处理的方法的示意性流程图。例如,图1的方法可以由第一主机的网卡执行。如上所述,第一主机的网卡可以实现RDMA技术。
如图1所示,在步骤102中,第一主机的网卡可以从操作主机接收针对锁资源的处理命令。
如上所述,锁资源可以设置在第一主机处。共享存储资源可以由第一主机和至少一个其它主机共享,而锁资源可以用于防止共享存储资源被至少两个主机同时操作。操作主机可以是至少一个其它主机和第一主机中的一者。
在步骤104中,第一主机的网卡可以基于处理命令,对锁资源进行处理。
在步骤106中,第一主机的网卡可以向操作主机发送响应消息。响应消息可以用于指示对锁资源的处理结果。
例如,响应消息可以用于指示对锁资源的处理是否成功。比如,响应消息可以是确认(Acknowledgement,ACK)消息,其可以指示对锁资源的处理成功;或者,响应消息可以是否定确认消息(Non-Acknowledgement,NACK),其可以指示对锁资源的处理失败。
可见,在该技术方案中,由于通过第一主机的实现RDMA技术的网卡对设置在第一主机处的锁资源进行处理,而无需第一主机的操作***参与,因此能够高效地完成锁资源处理过程,从而使得多个主机能够高效地访问共享存储资源。因此,该技术方案能够实现用于分布式或集群环境的高效锁机制。
在本说明书中,锁资源可以是任何适用类型的锁资源。例如,在一个实施例中,锁资源可以是自旋锁(Spinlock)资源。自旋锁资源可以用于对共享存储资源加锁或解锁。例如,当利用自旋锁资源来为共享存储资源加锁之后,操作主机可以对共享存储资源进行操作。如果未能为共享存储资源加锁(比如,其它主机已经加锁),则操作主机可以进行自旋直到可以访问共享存储资源为止或者在达到自旋次数之后退出自旋。
自旋锁机制的执行速度快,颗粒细,不涉及上下文切换,而且该锁机制可以保证对锁资源操作的原子性。但是,现有的自旋锁机制仅能在单主机上实现来保护该主机上的资源,无法应用于分布式或集群环境中。
在本说明书的技术方案中,通过RDMA技术,能够将自旋锁机制有效地应用于分布式或集群环境中的共享存储资源。因此,本说明书的技术方案能够实现用于分布式或集群环境的高效自旋锁机制。
在一个实施例中,上述共享存储资源可以是高速共享存储资源或非高速共享存储资源。例如,高速共享存储资源可以包括高速存储介质,比如针对高性能和灵活性而设计的存储类内存(Storage Class Memory),比如现有的Apache Pass(AEP)产品。
对于高速共享存储资源而言,传统的锁机制存在很大的性能瓶颈,例如,延时大、加锁和解锁代价高等等,因此并不适用于高速共享存储资源。
然而,在本说明书的技术方案中,通过RDMA技术来实现对锁资源的处理,使得多个主机能够高效地访问高速共享存储资源,从而能够有效地解决上述性能瓶颈。
在一个实施例中,在步骤102中,处理命令可以用于指示获取锁资源。例如,操作主机可以在对共享存储资源进行操作之前,向第一主机的网卡发送该处理命令。第一主机的网卡可以在接收到该处理命令之后,获取设置在第一主机处的锁资源。第一主机的网卡可以向操作主机发送响应消息,例如响应消息可以指示成功获取到锁资源。这样,操作主机可以对共享资源进行操作。如果第一主机的网卡未能成功获取到锁资源,可以向操作主机发送用于指示未成功获取锁资源的响应消息。这样,操作主机可以基于该响应消息进行下一步的操作。比如,对于自旋锁资源而言,操作主机可以进入自旋模式以等待锁资源的释放。
在一个实施例中,在步骤102中,处理命令可以用于指示释放锁资源。例如,操作主机可以在完成对共享存储资源的操作之后,可以向第一主机的网卡发送该处理命令。第一主机的网卡在接收到该处理命令之后,可以释放锁资源,以便其它主机可以获取锁资源。
在一个实施例中,上述锁资源可以设置在第一主机的内存中。这样,第一主机的网卡可以通过RDMA技术直接访问第一主机的内存,从而高效地获取或释放锁资源。例如,锁资源可以设置在第一主机的普通内存中。或者,锁资源可以设置在第一主机的持久化内存中,从而实现锁资源的持久化。
在一个实施例中,第一主机的网卡可以具有可编程功能。例如,第一主机的网卡可以具有现场可编程门阵列(Field Programmable Gate Array,FPGA),比如智能NIC(SmartNetwork Interface Controller)。
在这种情况下,可以将锁资源设置在第一主机的网卡中,也可以理解为将锁资源卸载到第一主机的网卡中。这样,第一主机的网卡可以直接针对设置在自身内的锁资源进行处理,而无需访问内存,从而能够进一步加速锁机制的实现,由此能够进一步加速多个主机对共享存储资源的访问。
此外,在本说明书中,操作主机可以是多个主机之一,这多个主机可以包括第一主机和至少一个其它主机。
例如,在一个实施例中,操作主机可以是第一主机。在这种情况下,第一主机可以通过上层应用与第一主机的网卡进行通信。比如,第一主机的上层应用可以向第一主机的网卡发送处理命令,并且从第一主机的网卡接收响应消息。
可见,在该实施例中,图1的方法可以通过RDMA技术来高效地实现第一主机对设置在本地的锁资源的处理。
在另一实施例中,操作主机可以是第二主机。比如,第二主机可以是上述至少一个其它主机中的一者。第二主机可以通过第二主机的网卡与第一主机的网卡进行通信。同样,第二主机的网卡可以实现RDMA技术。
例如,第二主机的网卡可以是RDMA网卡,或者可以是具有可编程功能的智能网卡。
可见,在该实施例中,图1的方法可以通过RDMA技术来高效地实现远程主机对远程锁资源的处理,由此能够实现用于分布式或集群环境下的高效的远程锁机制。
对于远程主机而言,上述处理命令可以是原子操作命令,比如RDMA技术中的原语atomic compare and swap primitive。这样,能够高效地实现远程锁机制,比如远程自旋锁机制。
上面从第一主机的网卡的角度描述了本说明书的技术方案。下面将从操作主机的角度来描述本说明书的技术方案。
图2是根据一个实施例的用于实现锁资源处理的方法的示意性流程图。图2的方法可以由操作主机来实现。例如,操作主机可以是至少一个其它主机和第一主机中的一者,而至少一个其它主机和第一主机可以对共享存储资源进行共享。
如图2所述,在步骤202中,操作主机可以向第一主机的网卡发送针对锁资源的处理命令。
第一主机的网卡可以实现RDMA技术。锁资源可以设置在第一主机处,并且锁资源可以用于防止共享存储资源被至少两个主机同时操作。
在步骤204中,操作主机可以从第一主机的网卡接收响应消息。
响应消息可以指示第一主机的网卡对锁资源的处理结果。
可见,在该技术方案中,由于通过第一主机的实现RDMA技术的网卡对设置在第一主机处的锁资源进行处理,而无需第一主机的操作***参与,因此能够高效地完成锁资源处理过程,从而使得多个主机能够高效地访问共享存储资源。因此,该技术方案能够实现用于分布式或集群环境的高效锁机制。
应当理解的是,在图2中可能存在与图1的相似之处,为了描述的简洁,下文不再赘述。
在一个实施例中,共享存储资源可以为高速共享存储资源或者非高速共享存储资源。
在一个实施例中,锁资源可以为自旋锁资源。
在一个实施例中,在步骤202中,处理命令可以用于指示获取锁资源。例如,操作主机可以在对共享存储资源进行操作之前,向第一主机的网卡发送该处理命令,以便通过第一主机的网卡来获取锁资源。
如果在步骤204中接收到的响应消息指示成功获取到锁资源,则操作主机可以对共享存储介质进行操作。
在一个实施例中,在步骤202中,处理命令可以用于指示释放锁资源。例如,操作主机可以在完成对共享存储资源的操作之后,向第一主机的网卡发送该处理命令,以便通过第一主机的网卡来释放锁资源。
在一个实施例中,操作主机可以是第一主机。第一主机可以通过上层应用与第一主机的网卡进行通信。例如,第一主机的上层应用可以向第一主机的网卡发送处理命令,并且可以从第一主机的网卡接收响应消息。
在一个实施例中,操作主机可以是第二主机。第二主机可以是至少一个其它主机中的一者。第二主机可以通过第二主机的网卡与第一主机的网卡进行通信。第二主机的网卡可以实现RDMA技术。也就是说,第一主机的网卡和第二主机的网卡可以基于RDMA技术来进行通信。
在这种情况下,处理命令可以是原子操作命令。即,第二主机的网卡可以向第一主机的网卡发送原子操作命令,以指示获取锁资源或释放锁资源。这样,可以高效地实现分布式或集群环境下的远程锁机制。
在一个实施例中,锁资源可以设置在第一主机的内存中,例如,设置在第一主机的普通内存或持久化内存中。
在一个实施例中,第一主机的网卡可以具有可编程功能。在这种情况下,锁资源可以设置在第一主机的网卡中。这样,由于无需访问内存,因此能够进一步加速锁机制的实现过程。
为了便于理解,下面结合具体例子来描述。应当理解的是,这些例子仅是示例性说明,并非对本说明书的技术方案的范围进行限制。
图3A是用于实现锁资源处理的场景的例子的示意图。
在图3A的例子中,假设第一主机302A和第二主机304A是以分布式或集群方式来部署的。第一主机302A和第二主机304A可以对共享存储资源306A进行共享。
第一主机302A可以包括上层应用、内存和网卡。在第一主机302A中,网卡可以实现RDMA技术,例如其可以是RDMA网卡或具有可编程功能的智能网卡。上层应用可以与网卡进行通信,例如,交互各种命令。此外,上层应用和网卡都可以访问内存。第一主机302A的上层应用、内存和网卡可以实现目前已知的各种功能以及本说明书的技术方案中的相关功能。在该例子中,针对共享存储资源306A的锁资源可以设置在第一主机302A的内存中。
第二主机304A也可以包括上层应用、内存和网卡。在第二主机304A中,网卡可以实现RDMA技术,例如其可以是RDMA网卡或具有可编程功能的智能网卡。上层应用可以与网卡进行通信,并且上层应用和网卡都可以访问内存。第二主机304A的上层应用、内存和网卡可以实现目前已知的各种功能以及本说明书的技术方案中的相关功能。此外,第一主机302A的网卡与第二主机304A的网卡可以基于RDMA技术来进行通信。
应当理解的是,为了便于说明,在图3A中仅示出了第一主机和第二主机的简化结构示意图。在具体实现时,第一主机和第二主机可以包括现有的各种其它相关的组件,此处不再赘述。
图3B是用于实现锁资源处理的场景的另一例子的示意图。
在图3B的例子中,假设第一主机302B和第二主机304B是以分布式或集群方式来部署的。第一主机302B和第二主机304B可以对共享存储资源306B进行共享。
第一主机302B可以包括上层应用、内存和网卡。在第一主机302B中,网卡可以实现RDMA技术,并且可以具有可编程功能。例如,其可以是智能网卡。因此,在该例子中,针对共享存储资源306B的锁资源可以设置在第一主机302A的网卡中。此外,上层应用可以与网卡进行通信,例如,交互各种命令。此外,上层应用和网卡都可以访问内存。第一主机302B的上层应用、内存和网卡可以实现目前已知的各种功能以及本说明书的技术方案中的相关功能。
第二主机304B也可以包括上层应用、内存和网卡。在第二主机304B中,网卡可以实现RDMA技术,并且可以具有可编程功能。例如,其可以是智能网卡。此外,上层应用可以与网卡进行通信,并且上层应用和网卡都可以访问内存。第二主机304B的上层应用、内存和网卡可以实现目前已知的各种功能以及本说明书中的技术方案中的相关功能。此外,第一主机302B的网卡与第二主机304B的网卡可以进行通信。
应当理解的是,为了便于说明,在图3B中仅示出了第一主机和第二主机的简化结构示意图。在具体实现时,第一主机和第二主机可以包括现有的各种其它相关的组件,此处不再赘述。
在图3A和图3B的例子中,关于锁机制的实现,可以存在两种情况。第一种情况是第一主机处理设置在本地的锁资源,第二种情况是第二主机处理设置在第一主机处的锁资源。下文将分别结合图3C和3D的过程来描述这两种情况的具体过程。
图3C是根据一个实施例的用于实现锁资源处理的过程的示意性流程图。图3C示出了第一主机的上层应用与第一主机的网卡之间的交互过程。即,图3C示出了第一主机如何处理本地锁资源的过程。
如图3C所示,在步骤302C中,当第一主机的上层应用要对共享存储资源306A进行操作时,其可以向第一主机的网卡发送用于获取锁资源的处理命令。
在步骤304C中,第一主机的网卡在接收到该处理命令之后,可以获取锁资源。
例如,在图3A的例子中,第一主机302A的网卡可以从第一主机302A的内存中获取锁资源。在图3B的例子中,第一主机302B的网卡可以从其本身获取锁资源。
在步骤306C中,在获取到锁资源之后,第一主机的网卡可以向上层应用发送用于指示成功获取到锁资源的响应消息。
在步骤308C中,上层应用在接收到该响应消息之后,可以对共享存储资源进行操作。
在步骤310C中,上层应用在完成对共享存储资源的操作之后,可以向第一主机的网卡发送用于释放锁资源的处理命令。
在步骤312C中,第一主机的网卡在接收到该处理命令之后,可以释放锁资源。
例如,在图3A的例子中,第一主机302A的网卡可以通过访问第一主机302A的内存来释放锁资源。在图3B的例子中,第一主机302B的网卡可以通过处理设置在其本身的锁资源,来释放锁资源。
在步骤314C中,第一主机的网卡可以向上层应用发送用于指示成功释放锁资源的响应消息。
可见,图3C可以实现在分布式或集群环境下的关于本地锁资源的处理过程。
图3D是根据一个实施例的用于实现锁资源处理的过程的示意性流程图。图3D示出了第一主机的网卡与第二主机之间的交互过程。可以理解的是,第一主机的网卡与第二主机之间的交互是经由第二主机的网卡来实现的。
在步骤302D中,当第二主机要对共享存储资源进行操作时,其可以向第一主机的网卡发送用于获取锁资源的处理命令。
例如,如果第二主机的上层应用决定要对共享存储资源进行操作,则第二主机的上层应用可以向第二主机的网卡发送关于获取锁资源的命令。第二主机的网卡可以向第一主机的网卡发送用于获取锁资源的处理命令。例如,该处理命令可以是原子操作命令。
步骤304D与图3C中的步骤304C类似,此处不再赘述。
在步骤306D中,第一主机的网卡可以向第二主机发送用于指示成功获取到锁资源的响应消息。
例如,第一主机的网卡可以向第二主机的网卡发送该响应消息。
第二主机的网卡可以将该响应消息传达给第二主机的上层应用。
在步骤308D,第二主机在接收到该响应消息之后,可以对共享存储资源进行操作。
例如,第二主机的上层应用从第二主机的网卡接收到关于获取到锁资源的响应消息之后,可以对共享存储资源进行操作。
在步骤310D中,第二主机在完成对共享存储资源的操作之后,可以向第一主机的网卡发送用于释放锁资源的处理命令。
例如,第二主机的上层应用在完成对共享存储资源的操作之后,可以向第二主机的网卡发送关于释放锁资源的命令,之后第二主机的网卡可以向第一主机的网卡发送用于释放锁资源的处理命令。
步骤312D与图3C中的步骤312C类似,此处不再赘述。
在步骤314D中,第一主机的网卡可以在释放锁资源之后,向第二主机发送用于指示成功释放锁资源的响应消息。
例如,第一主机的网卡可以向第二主机的网卡发送该响应消息,之后第二主机的网卡可以将该响应消息传达给第二主机的上层应用。
可见,图3D的过程可以实现分布式或集群环境下的高效的远程锁机制。
图4是根据一个实施例的用于实现锁资源处理的网卡的示意性框图。例如,网卡400可以与上述第一主机的网卡相对应。
网卡400可以设置在第一主机处,并且可以实现RDMA技术。网卡400可以包括接收单元402、处理单元404和发送单元406。
接收单元402可以从操作主机接收针对锁资源的处理命令。锁资源可以设置在第一主机处。共享存储资源可以由第一主机与至少一个其它主机共享。锁资源可以用于防止共享存储资源被至少两个主机同时操作。操作主机可以是至少一个其它主机和第一主机中的一者。
处理单元404可以基于处理命令,对锁资源进行处理。
发送单元406可以向操作主机发送响应消息,其中,响应消息用于指示对锁资源的处理结果。
可见,在该技术方案中,由于通过第一主机的实现RDMA技术的网卡对设置在第一主机处的锁资源进行处理,而无需第一主机的操作***参与,因此能够高效地完成锁资源处理过程,从而使得多个主机能够高效地访问共享存储资源。因此,该技术方案能够实现用于分布式或集群环境的高效锁机制。
在一个实施例中,处理命令可以用于指示获取锁资源,并且处理命令是操作主机在对共享存储资源进行操作之前发送的。
在一个实施例中,处理命令可以用于指示释放锁资源,并且处理命令是操作主机在完成对共享存储资源的操作之后发送的。
在一个实施例中,操作主机可以是第一主机。第一主机可以通过上层应用与网卡进行通信。
在一个实施例中,操作主机可以是第二主机。第二主机可以是至少一个其它主机中的一者。第二主机可以通过第二主机的网卡与网卡400进行通信。第二主机的网卡可以实现RDMA技术。
在一个实施例中,处理命令可以为原子操作命令。
在一个实施例中,锁资源可以设置在第一主机的内存中。
在一个实施例中,网卡400可以具有可编程功能,并且锁资源可以设置在网卡400中。
在一个实施例中,共享存储资源可以为高速共享存储资源。
在一个实施例中,锁资源可以为自旋锁资源。
网卡400的各个单元可以执行图1至3D的方法实施例中的关于第一主机的网卡描述的过程。因此,为了描述的简洁,网卡400的各个单元的具体操作和功能此处不再赘述。
图5是根据一个实施例的用于实现锁资源处理的装置的示意性框图。例如,装置500可以与操作主机相对应。
装置500可以是至少一个其它主机和第一主机中的一者。装置500可以包括发送单元502和接收单元504。
发送单元502可以向第一主机的网卡发送针对锁资源的处理命令。第一主机的网卡可以实现RDMA技术。锁资源可以设置在第一主机处。共享存储资源可以由第一主机与至少一个其它主机共享。锁资源可以用于防止共享存储资源被至少两个主机同时操作。
接收单元504可以从第一主机的网卡接收响应消息,其中,响应消息指示第一主机的网卡对锁资源的处理结果。
可见,在该技术方案中,由于通过第一主机的实现RDMA技术的网卡对设置在第一主机处的锁资源进行处理,而无需第一主机的操作***参与,因此能够高效地完成锁资源处理过程,从而使得多个主机能够高效地访问共享存储资源。因此,该技术方案能够实现用于分布式或集群环境的高效锁机制。
在一个实施例中,处理命令可以用于指示获取锁资源,并且处理命令可以是装置500在对共享存储资源进行操作之前发送的。
在一个实施例中,处理命令可以用于指示释放锁资源,并且处理命令可以是装置500在完成对共享存储资源的操作之后发送的。
在一个实施例中,装置500可以是第一主机。第一主机可以通过上层应用与第一主机的网卡进行通信。
在一个实施例中,装置可以是第二主机。第二主机可以是至少一个其它主机中的一者。第二主机可以通过第二主机的网卡与第一主机的网卡进行通信。第二主机的网卡可以实现RDMA技术。
在一个实施例中,处理命令可以为原子操作命令。
在一个实施例中,锁资源可以设置在第一主机的内存中。
在一个实施例中,第一主机的网卡可以具有可编程功能,并且锁资源可以设置在第一主机的网卡中。
在一个实施例中,共享存储资源可以为高速共享存储资源。
在一个实施例中,锁资源可以为自旋锁资源。
图6是根据一个实施例的计算设备的结构示意图。例如,计算设备600可以对应于上述第一主机。如图6所示,计算设备600可以包括上层应用602、内存604和网卡606。
网卡606和上层应用602能够访问内存604。网卡606可以用于实现上述关于第一主机的网卡描述的过程,此处不再赘述。
计算设备600可以采用本领域任何适用的形式来实现,例如,其包括但不限于台式计算机、膝上型计算机、智能电话、平板计算机、消费电子设备、可穿戴智能设备等等。
图7是根据一个实施例的计算设备的结构示意图。例如,计算设备700可以对应于上述操作主机。如图7所示,计算设备700可以包括上层应用702、内存704和网卡706。
网卡706和上层应用702能够访问内存704。上层应用702和网卡706可以用于实现上述关于操作主机描述的过程,此处不再赘述。
计算设备700可以采用本领域任何适用的形式来实现,例如,其包括但不限于台式计算机、膝上型计算机、智能电话、平板计算机、消费电子设备、可穿戴智能设备等等。
应当理解的是,本说明书中的各个实施例均采用递进的方式来描述,各个实施例之间相同或相似的部分相互参见即可,每个实施例重点说明的都是与其它实施例的不同之处。例如,对于上述关于装置的实施例、关于计算设备的实施例以及关于机器可读存储介质的实施例而言,由于它们基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上文对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述各流程和各***结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
在整个本说明书中使用的术语“示例性”意味着“用作例子、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
以上结合附图详细描述了本公开内容的实施例的可选实施方式,但是,本公开内容的实施例并不限于上述实施方式中的具体细节,在本公开内容的实施例的技术构思范围内,可以对本公开内容的实施例的技术方案进行多种简单变型,这些简单变型均属于本公开内容的实施例的保护范围。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。