The invention discloses a method of thread synchronization and thread synchronization system, wherein, the thread synchronization method by the destructor to ensure thread access to any of the protective region will change after the success of the first variable state is the first state to release in the thread access process for locking the protected area. Thus, the timely release of the protected area and purpose; when visiting the protected area thread is killed, will not affect the normal operation of the destructor, to avoid deadlock is to access the protected area the thread is killed off and may lead to the emergence of. And the method of thread synchronization is achieved with a variable to control the status of all the protection areas are accessible, so as to realize the protection of all regions of the state under control purposes.
【技术实现步骤摘要】
一种线程同步方法及线程同步系统
本申请涉及计算机应用
,更具体地说,涉及一种线程同步方法及线程同步系统。
技术介绍
多线程操作可以实现充分利用系统资源,缩短程序响应时间和改善用户体验的目的,因此广泛应用于各类计算机程序中。线程同步是多线程操作中不可或缺的步骤,合理有效的线程同步能够有效地保证数据的正确性和程序的正常运行。由于在系统中存在一些敏感数据,这些敏感数据不允许被多个线程同时访问,此时就需要对多线程进行线程同步,以保证在同一时间只有一个线程访问包含敏感数据的保护区域,从而保证敏感数据的完整性。线程同步是指多线程之间的协同步调,即多线程之间按照预定的先后次序访问保护区域。现有技术中对多线程进行线程同步的方法主要包括“临界区法”“事件法”“互斥量法”和“信号量法”,但是在实际应用过程中,这些线程同步方法都可能会存在当访问保护区域的线程被杀掉,而导致的保护区域得不到释放或重置的情况出现,在这种情况下,其他线程无法访问保护区域,导致死锁。
技术实现思路
为解决上述技术问题,本专利技术提供了一种线程同步方法及线程同步系统,以实现避免由于当访问保护区域的线程被杀掉而可能出现的死锁现象。为实现上述技术目的,本专利技术实施例提供了如下技术方案:一种线程同步方法,包括:定义全局变量,所述全局变量包括第一变量和第二变量,所述第一变量包括第一状态和第二状态,所述第二变量用于对所述第一变量进行加锁操作;在每个保护区域中新建互斥锁类对象,类包括析构函数和指针成员变量,所述指针成员变量用于保存所述第一变量和第二变量;将所述第一变量和第二变量均以指针参数形式传入所有所述互斥锁类 ...
【技术保护点】
一种线程同步方法,其特征在于,包括:定义全局变量,所述全局变量包括第一变量和第二变量,所述第一变量包括第一状态和第二状态,所述第二变量用于对所述第一变量进行加锁操作;在每个保护区域中新建互斥锁类对象,类包括析构函数和指针成员变量,所述指针成员变量用于保存所述第一变量和第二变量;将所述第一变量和第二变量均以指针参数形式传入所有所述互斥锁类对象的构造函数中,所述第一变量包括第一状态和第二状态,所述第一变量所处状态用于标识所述保护区域是否可被线程访问;当所述线程请求访问任一所述保护区域时,根据所述第一变量所处状态判断所述保护区域是否可被访问,在所述保护区域可被访问时访问所述保护区域,并在访问成功后在所述析构函数中更改所述第一变量所处状态以使所述保护区域可被访问。
【技术特征摘要】
1.一种线程同步方法,其特征在于,包括:定义全局变量,所述全局变量包括第一变量和第二变量,所述第一变量包括第一状态和第二状态,所述第二变量用于对所述第一变量进行加锁操作;在每个保护区域中新建互斥锁类对象,类包括析构函数和指针成员变量,所述指针成员变量用于保存所述第一变量和第二变量;将所述第一变量和第二变量均以指针参数形式传入所有所述互斥锁类对象的构造函数中,所述第一变量包括第一状态和第二状态,所述第一变量所处状态用于标识所述保护区域是否可被线程访问;当所述线程请求访问任一所述保护区域时,根据所述第一变量所处状态判断所述保护区域是否可被访问,在所述保护区域可被访问时访问所述保护区域,并在访问成功后在所述析构函数中更改所述第一变量所处状态以使所述保护区域可被访问。2.根据权利要求1所述的线程同步方法,其特征在于,当所述第一变量处于第一状态时,所有所述保护区域处于可被线程访问状态,当所述第一变量处于第二状态时,所有所述保护区域处于不可被线程访问状态。3.根据权利要求2所述的线程同步方法,其特征在于,所述第一变量为布尔型变量,所述第一状态为False,第二状态为True;所述第二变量为线程锁变量。4.根据权利要求1所述的线程同步方法,其特征在于,所述当所述线程请求访问任一所述保护区域时,根据所述第一变量所处状态判断所述保护区域是否可被访问,在所述保护区域可被访问时访问所述保护区域,并在访问成功后在所述析构函数中更改所述第一变量所处状态以使所述保护区域可被访问包括:当所述线程请求访问任一所述保护区域时,获取所述第一变量所处状态,判断所述第一变量状态是否处于第一状态,如果是,则访问所述保护区域,并利用所述第二变量对所述第一变量进行加锁操作,并将所述第一变量的状态更改为第二状态,当该线程访问成功后在所述析构函数中将所述第一变量的状态更改为第一状态;如果否,则判断访问时间是否超时,若否,则在预设时间后返回获取所述第一变量所处状态的步骤。5.根据权利要求4所述的线程同步方法,其特征在于,所述获...
【专利技术属性】
技术研发人员:陈阳春,王雁,
申请(专利权)人:北京奇艺世纪科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。