一种单例类接口调用方法、终端装置及存储介质制造方法及图纸

技术编号:24408924 阅读:60 留言:0更新日期:2020-06-06 08:18
本发明专利技术公开了一种单例类接口调用方法、终端装置及存储介质,适用于应用开发技术领域。本发明专利技术提供的方法包括:定义单例类的instance接口的方法,并在所述单例类中定义一个变量,其中,所述变量用于标注所述instance接口访问状态信息;根据当前所述变量值,判断所述单例类的单例对象是否已被创建,当单例对象未被创建,则通过原子操作获取单例对象是否在创建过程中;当单例对象正被线程创建时,则等待所述线程中的单例对象创建完成,并返回创建完成的单例对象的对象指针。本发明专利技术中不使用传统加锁机制,而能够在保障线程安全的同时,提高单例类的实例接口的调用效率。

A single instance interface calling method, terminal device and storage medium

【技术实现步骤摘要】
一种单例类接口调用方法、终端装置及存储介质
本专利技术属于应用开发领域,尤其涉及一种单例类接口调用方法、终端装置及存储介质。
技术介绍
在项目开发或软件设计过程中,经常要用到单例模式,即应用该模式的类只有一个实例。单例提供了一种全局访问唯一对象的方法,保证全局访问的都是同一个对象。而在实际使用单例类的过程中,为了保障线程安全,通常会在访问对象的接口内部,增加加锁同步机制,这种方式能够保障线程安全,但每次调用接口过程,都会涉及到加锁同步功能,导致调用效率较低。
技术实现思路
有鉴于此,本专利技术实施例提供了一种单例类接口调用方法、终端装置及存储介质,用于解决传统单例类使用加锁机制存在接口调用效率低的问题。本专利技术实施例的第一方面,提供了一种单例类接口调用方法,包括:定义单例类的instance接口的方法,并在所述单例类中定义一个变量,其中,所述变量用于标注所述instance接口访问状态信息;根据当前所述变量值,判断所述单例类的单例对象是否已被创建,当单例对象未被创建,则通过原子操作获取单例对象是否处于创建过程中;当单例对象正被另一线程创建,则等待所述线程中的单例对象创建完成,并返回创建完成的单例对象的对象指针。本专利技术实施例的第二方面,提供了一种终端装置,包括:定义模块,用于定义单例类的instance接口的方法,并在所述单例类中定义一个变量,其中,所述变量用于标注所述instance接口访问状态信息;判断模块,用于根据当前所述变量值,判断所述单例类的单例对象是否已被创建,当单例对象未被创建,则通过原子操作获取单例对象是否处于创建过程中;返回模块,用于当单例对象正被另一线程创建,则等待所述线程中的单例对象创建完成,并返回创建完成的单例对象的对象指针。本专利技术实施例的第三方面,提供了一种终端装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本专利技术实施例第一方面所述方法的步骤。本专利技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例中,通过定义单例类的instance接口,通过变量标识instance接口调用状态,根据接口状态,判断单例对象是否被创建,通过原子操作获取创建状态,进而获得结果,通过本专利技术实施例中的方法可以不使用加锁机制,而保障线程安全,进而能够提高单例类实例化过程中的接口调用效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的单例类接口调用方法的一个实施例流程图;图2为本专利技术实施例提供的单例类接口调用方法的另一个实施例流程图;图3为本专利技术实施例提供的单例类接口调用的终端装置的结构示意图;图4为本专利技术实施例提供的终端装置的结构示意图。具体实施方式本专利技术实施例提供了一种单例类接口调用方法、终端装置及存储介质,用于提高接口调用效率。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。实施例一:请参阅图1,本专利技术实施例提供的单例类接口调用方法的流程示意图,包括以下步骤:S101、定义单例类的instance接口的方法,并在所述单例类中定义一个变量,其中,所述变量用于标注所述instance接口访问状态信息;所述单例类指的是在程序设计中只能拥有一个实例的特殊类,所述instance接口即类的实例化接口,通过该接口可以对所述单例类进行实例化。可选的,设置所述instance接口权限为public,其中,所述instance接口为全局访问所述单例类的实例对象的唯一接口,确保单例类的全局唯一。可选的,定义所述单例类的构造函数,并设置所述构造函数的属性为private。私有权限的类,类外部不能进行访问,其他类就不能直接调用进行实例化。所述变量可以标注instance接口访问状态信息,当外部访问该接口时,通过变量值记录状态信息,如当变量值state=1,则表示该接口被访问,单例对象被创建,state=0,表示单例对象未被创建。S102、根据当前所述变量值,判断所述单例类的单例对象是否已被创建,当单例对象未被创建,则通过原子操作获取单例对象是否处于创建过程中;判断当前时刻变量的值,根据变量值判定是否有线程在创建单例对象。所属单例类的单例对象即单例类的实例化对象,在单例类的实例化过程中,一个线程只能进行一次的实例化操作。所述原子操作指的是不会被线程调度机打断的操作,具体的,通过调用函数InterlockedCompareExchange获取对象是否在创建过程中。可选的,当单例对象已被创建,则调用所述instance接口直接返回所述单例对象的对象指针。可选的,当所述单例对象未处于创建过程,则创建单例对象,并更改所述变量表示的状态,调用instance直接返回所述单例对象的对象指针。S103、当单例对象正被另一线程创建时,则等待所述线程中的单例对象创建完成,并返回创建完成的单例对象的对象指针。当单例类的实例化正通过其他一个线程进行时,设定当前线程的创建操作进入等待状态,这样可以实现线程互斥,避免两个线程竞争影响CPU调度时,线程响应速度。所述对象指针为指向类的数据成员及成员函数指针,通过该指针可以访问到实例对象。上述步骤,根据标识状态的变量的值,判断实例对象是否被创建,再结合原子操作判定是否在创建过程中,实现线程互斥,进而保障线程合理调度,保障线程安全,同时,由于不必使用加锁机制,接口调用效率大大提高。在图1的基础上,结合图2详述单例对象状态判断的具体过程,如下:在单例类中定义一个变量instance_state后,每当外部访问instance接口时,更改instance_state的值,如设定访问instance接口,创建单例对象时,将instance_state值为1,未创建单例对象时,将值设为0。在S201中,调用InterlockedExchange判断单例类的实本文档来自技高网...

【技术保护点】
1.一种单例类接口调用方法,其特征在于,包括:/n定义单例类的instance接口方法,并在所述单例类中定义一个变量,其中,所述变量用于标注所述instance接口访问状态信息;/n根据当前所述变量值,判断所述单例类的单例对象是否已被创建,当单例对象未被创建,则通过原子操作获取单例对象是否处于创建过程中;/n当单例对象正被另一线程创建时,则等待所述线程中的单例对象创建完成,并返回创建完成的单例对象的对象指针。/n

【技术特征摘要】
1.一种单例类接口调用方法,其特征在于,包括:
定义单例类的instance接口方法,并在所述单例类中定义一个变量,其中,所述变量用于标注所述instance接口访问状态信息;
根据当前所述变量值,判断所述单例类的单例对象是否已被创建,当单例对象未被创建,则通过原子操作获取单例对象是否处于创建过程中;
当单例对象正被另一线程创建时,则等待所述线程中的单例对象创建完成,并返回创建完成的单例对象的对象指针。


2.根据权利要求1所述的方法,其特征在于,所述定义单例类的instance接口的方法之前还包括:
定义所述单例类的构造函数,并设置所述构造函数的属性为private。


3.根据权利要求1所述的方法,其特征在于,所述定义单例类的instance接口的方法还包括:
设置所述instance接口权限为public,其中,所述instance接口为全局访问所述单例类的实例对象的唯一接口。


4.根据权利要求1所述的方法,其特征在于,所述根据当前所述变量值,判断所述单例类的单例对象是否已被创建还包括:
当单例对象已被创建,则调用所述instance接口直接返回所述单例对象的对象指针。


5.根据权利要求1所述的方法,其特征在于,所述当单例对象未被创建,则通过原子操作获取单例对象是否处于创建过程中还包括:
当所述单例对象未处于线程创建过程中,则创建单例对象,并更改所述变量表示的状态,调用instance直接返回所...

【专利技术属性】
技术研发人员:黄浩
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

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

1