一种线程访问临界区的方法、系统和终端设备技术方案

技术编号:7758922 阅读:155 留言:0更新日期:2012-09-14 00:37
本发明专利技术公开一种线程访问临界区的方法、系统和终端设备。本发明专利技术通过创建线程互斥锁变量和创建所述线程互斥锁变量的状态值;初始化所述线程互斥锁变量为状态值;获取线程的访问方式;判断所述线程互斥锁变量中的当前值是否等于所述状态值,若是则允许所述线程以所述访问方式访问临界区,并根据所述访问方式修改所述线程互斥锁变量中的当前值。确保线程访问临界区前,能够快速确定所述临界区是否可用,如果所述临界区不可用,线程可主动放弃CPU时间片,避免线程访问笨重、耗时的系统锁,提高了临界区的访问效率以及多线互斥访问的效率,减少了CPU消耗,同时提高了软件产品的市场竞争力。通过原子递增或者递减,更加准确和有效的访问临界区。

【技术实现步骤摘要】

本专利技术涉及多线程调用领域,尤其涉及一种线程访问临界区的方法、系统和终端设备
技术介绍
现有技术中,不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。每个进程中访问临界资源的那段代码称为临界区(Critical Section)(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。 进程进入临界区的调度原则是I)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。2)任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。3)进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。现有技术存在的问题多个进程互斥的访问临界区时,访问效率低,等待时间长,CPU消耗大。
技术实现思路
本专利技术实施例的目的在于提出一种线程访问临界区的方法,旨在解决现有技术多个进程互斥的访问临界区时,访问效率低,等待时间长,CPU消耗大的技术问题。本专利技术实施例是这样实现的,一种线程访问临界区的方法,所述方法包括步骤创建线程互斥锁变量;创建所述线程互斥锁变量的状态值;初始化所述线程互斥锁变量为状态值;获取线程的访问方式;判断所述线程互斥锁变量中的当前值是否等于所述状态值,若是则允许所述线程以所述访问方式访问临界区,并根据所述访问方式修改所述线程互斥锁变量中的当前值。本专利技术实施例的另一目的在于提出一种线程访问临界区的系统,所述系统包括第一创建模块、第二创建模块、初始模块、获取模块、判断模块、访问模块和修改模块;所述第一创建模块,与所述第二创建模块、初始模块、判断模块和修改模块相连,用于创建线程互斥锁变量;所述第二创建模块,与所述第一创建模块和初始模块相连,用于创建所述线程互斥锁变量的状态值;所述初始模块,与所述第一创建模块、第二创建模块和获取模块相连,用于初始化所述线程互斥锁变量为状态值,并发送获取指令到所述获取模块;所述获取模块,与所述判断模块相连,用于接收所述初始模块发送的获取指令,并获取线程的访问方式,同时发送判断指令到所述判断模块;所述判断模块,与所述获取模块、第一创建模块、访问模块和修改模块相连,用于接收所述获取模块发送的判断指令,并判断所述线程互斥锁变量中的当前值是否等于所述状态值,若是则发送访问指令到所述访问模块,并发送修改指令到所述修改模块;所述访问模块,与所述判断模块相连,用于接收所述判断模块发送的访问指令,并允许所述线程以所述访问方式访问临界区; 所述修改模块,与所述判断模块和第一创建模块相连,用于接收所述判断模块发送的修改指令,并根据所述访问方式修改所述线程互斥锁变量中的当前值。本专利技术实施例的另一目的在于提出一种线程访问临界区的终端设备。本专利技术的有益效果本专利技术通过创建线程互斥锁变量和创建所述线程互斥锁变量的状态值;初始化所述线程互斥锁变量为状态值;获取线程的访问方式;判断所述线程互斥锁变量中的当前值是否等于所述状态值,若是则允许所述线程以所述访问方式访问临界区,并根据所述访问方式修改所述线程互斥锁变量中的当前值。确保线程访问临界区前,能够快速确定所述临界区是否可用,如果所述临界区不可用,线程可主动放弃CPU时间片,避免线程访问笨重、耗时的系统锁,提高了临界区的访问效率以及多线互斥访问的效率,减少了 CPU消耗,同时提高了软件产品的市场竞争力。尤其是线程访问非常小的临界区时,进一步提高了线程的访问效率。通过原子递增或者递减,更加准确和有效的访问临界区。附图说明图I是本专利技术一种线程访问临界区方法的第一优选实施例流程图;图2是本专利技术32位线程互斥锁变量的结构示意图;图3是本专利技术一种线程访问临界区方法的第二优选实施例流程图;图4是本专利技术一种线程访问临界区方法的第三优选实施例流程图;图5是本专利技术一种线程访问临界区系统的第一优选实施例结构示意图;图6是本专利技术一种线程访问临界区系统的第二优选实施例结构示意图;图7是本专利技术一种线程访问临界区系统的第三优选实施例结构示意图;图8是本专利技术一种线程访问临界区系统的第四优选实施例结构示意图;图9是本专利技术一种线程访问临界区系统的第五优选实施例结构示意图;图10是本专利技术一种线程访问临界区系统的第六优选实施例结构示意图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本专利技术进行进一步详细说明,为了便于说明,仅示出了与本专利技术实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本专利技术,并不用以限制本专利技术。本专利技术通过创建线程互斥锁变量和创建所述线程互斥锁变量的状态值;初始化所述线程互斥锁变量为状态值;获取线程的访问方式;判断所述线程互斥锁变量中的当前值是否等于所述状态值,若是则允许所述线程以所述访问方式访问临界区,并根据所述访问方式修改所述线程互斥锁变量中的当前值;若否则禁止所述线程以所述访问方式访问临界区。确保线程访问临界区前,能够快速确定所述临界区是否可用,如果所述临界区不可用,线程可主动放弃CPU时间片,避免线程访问笨重、耗时的系统锁,提高了临界区的访问效率以及多线互斥访问的效率,减少了 CPU消耗,同时提高了软件产品的市场竞争力。尤其是线程访问非常小的临界区时,进一步提高了线程的访问效率。通过原子递增或者递减,更加准确和有效的访问临界区。实施例一图I是本专利技术一种线程访问临界区方法的第一优选实施例流程图。所述的方法包括以下步骤S101,创建线程互斥锁变量;所述线程互斥锁变量的位数为CPU —次能处理的最大位数;所述线程互斥锁变量为有符号整数的线程互斥锁变量;所述线程互斥锁变量的最高位为符号位,当所述符号位为O时,表示所述线程互斥锁变量中的值为正整数;当所述符号位为I时,表示所述线程互斥锁变量中的值为负整数;所述线程互斥锁变量的最高位的下一位若为I则表示线程互斥锁空闲,允许线程访问临界区;若为O则表示已经有线程访问临界区;所述线程互斥锁变量的其他位为读锁计数器位,用于存储当前读临界区的线程的数量;所述线程互斥锁变量的值以补码表示;为便于理解,举例说明,如图2所示为本专利技术32位线程互斥锁变量lock的结构示意图,其中S200为第O位,S201为第29位,S202为第30位,S203为第31位,其中最高位为S203,S203为符号位,最高位的下一位为S202,其余位S200-S201为读锁计数器; 当有一个线程访问临界区时,所述线程互斥锁变量的值为0x3ffffffT ;当有两个线程访问临界区时,所述线程互斥锁变量的值为0x3ffffffe,以此类推;S102,创建所述线程互斥锁变量的状态值;所述线程互斥锁变量还包括4个状态值,分别是空闲状态值、读状态值、写状态值和读溢出状态值,其中空闲状态值表示线程可以写临界区也可以读临界区;读状态值表示线程可以读临界区;写状态值表示不允许线程读或者写所述临界区;读溢出状态值表示读临界区的线程的数量超出了预定的上限范围,禁止其他线程读所述临界区;为便于理解,以32位CPU举例,创建所述线程互斥锁变量lock的4个本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:刘骁
申请(专利权)人:深圳市融创天下科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1