太阳城集团

  • / 12
  • 下载费用:30 金币  

多用户进程互斥方法及装置.pdf

摘要
申请专利号:

CN201611036534.5

申请日:

2016.11.18

公开号:

CN106776050A

公开日:

2017.05.31

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 9/52申请日:20161118|||公开
IPC分类号: G06F9/52 主分类号: G06F9/52
申请人: 广州视源电子科技股份有限公司; 广州视睿电子科技有限公司
发明人: 李春
地址: 510530 广东省广州市广州黄埔区云埔四路6号
优先权: 2016.10.17 CN 2016109036563
专利代理机构: 广州华进联合专利商标代理有限公司 44224 代理人: 周清华
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201611036534.5

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.23|||2017.05.31

法律状态类型:

实质审查的生效|||公开

摘要

太阳城集团本发明涉及一种多用户进程互斥方法及装置,多用户进程互斥方法,包括以下步骤:在进程实例启动时,若检测到当前本地进程中无具名互斥锁,读取应用程序配置文件中的启动项配置太阳城集团;获取启动项配置太阳城集团中的启动项配置逻辑值;根据启动项配置逻辑值,判断当前本地进程中是否存在多用户运行;在判断的结果为否时,运行进程实例。本发明能够解决传统进程互斥锁无法满足多用户情况下的进程互斥的问题;通过本发明,可以有效的解决应用程序退出时可能会非正常退出或同一台电脑上也可能存在不同的程序,拥有相同的进程名等情况对多用户进程互斥方案的干扰。

权利要求书

1.一种多用户进程互斥方法,其特征在于,包括以下步骤:
在进程实例启动时,若检测到当前本地进程中无具名互斥锁,读取应用程序配置文件
中的启动项配置太阳城集团;
获取所述启动项配置太阳城集团中的启动项配置逻辑值;
根据所述启动项配置逻辑值,判断所述当前本地进程中是否存在多用户运行;
在所述判断的结果为否时,运行所述进程实例。
2.根据权利要求1所述的多用户进程互斥方法,其特征在于,在所述若检测到当前本地
进程中无具名互斥锁的步骤之前包括步骤:
调用创建互斥锁函数生成所述具名互斥锁,获取应用程序编程接口函数根据所述具名
互斥锁反馈的返回值;
所述若检测到当前本地进程中无具名互斥锁的步骤包括:
在所述返回值为互斥锁已存在错误码时,确定所述当前本地进程中存在所述具名互斥
锁。
3.根据权利要求1所述的多用户进程互斥方法,其特征在于,根据所述启动项配置逻辑
值,判断所述当前本地进程中是否存在多用户运行的步骤包括:
在所述启动项配置逻辑值为False时,确定所述当前本地进程中不存在多用户运行;
在所述启动项配置逻辑值为True时,扫描所述当前本地进程,获取本地进程快照;遍历
所述本地进程快照,在所述遍历的结果为所述本地进程快照中不存在相同进程名时,确定
所述当前本地进程中不存在多用户运行。
4.根据权利要求1至3任意一项所述的多用户进程互斥方法,其特征在于,在所述判断
的结果为否时,运行所述进程实例的步骤包括:
将所述启动项配置逻辑值配置为True,运行所述进程实例。
5.根据权利要求1至3任意一项所述的多用户进程互斥方法,其特征在于,在所述判断
的结果为否时,运行所述进程实例的步骤之后还包括步骤:
在所述进程实例运行结束退出时,将所述启动项配置逻辑值配置为False。
6.一种多用户进程互斥装置,其特征在于,包括:
读取检测单元,用于在进程实例启动时,若检测到当前本地进程中无具名互斥锁,读取
应用程序配置文件中的启动项配置太阳城集团;
逻辑值获取单元,用于获取所述启动项配置太阳城集团中的启动项配置逻辑值;
判断单元,用于根据所述启动项配置逻辑值,判断所述当前本地进程中是否存在多用
户运行;
运行单元,用于在所述判断的结果为否时,运行所述进程实例。
7.根据权利要求6所述的多用户进程互斥装置,其特征在于,所述读取检测单元包括:
创建模块,用于调用创建互斥锁函数生成所述具名互斥锁;
返回值获取模块,用于获取应用程序编程接口函数根据所述具名互斥锁反馈的返回
值。
检测模块,用于在所述返回值为互斥锁已存在错误码时,确定所述当前本地进程中存
在所述具名互斥锁。
8.根据权利要求6所述的多用户进程互斥装置,其特征在于,所述判断单元包括:
扫描遍历模块,用于在所述启动项配置逻辑值为True时,扫描所述当前本地进程,获取
并遍历本地进程快照;
确定结果模块,用于在所述启动项配置逻辑值为False时或在所述遍历的结果为所述
本地进程快照中不存在相同进程名时,确定所述当前本地进程中不存在多用户运行。
9.根据权利要求6至8任意一项所述的多用户进程互斥装置,其特征在于,所述运行单
元,用于将所述启动项配置逻辑值配置为True,运行所述进程实例。
10.根据权利要求6至8任意一项所述的多用户进程互斥装置,其特征在于,所述运行单
元,用于在所述进程实例运行结束退出时,将所述启动项配置逻辑值配置为False。

说明书

多用户进程互斥方法及装置

技术领域

本发明涉及计算机技术领域,特别是涉及一种多用户进程互斥方法及装置。

背景技术

大多数应用软件(Application Software)不支持多用户运行,例如在端口绑定、
需要使用临界资源的情况下,应用软件如果绑定了固定端口,当多个用户运行该应用软件
的程序,就会反复绑定这个端口,第一个绑定会成功,其后的绑定都会失败。临界资源有可
能被第一个用户占用,其他用户则无法使用。此时如果用户运行该应用软件的程序,软件会
出现端口绑定失败导致的通信失败的现象;同时临界资源被占用会导致应用软件出现死
锁、初始化失败等异常现象。

为了应对上述现象,目前传统的解决方案是采用互斥锁。但在实现过程中,发明人
发现传统技术至少存在如下问题:

由于系互斥锁必须要管理员权限,普通权限用户无法检测到互斥锁,进而也无法
实现多用户进程互斥。即互斥锁存在不适用于普通权限用户的缺陷。

发明内容

基于此,有必要针对由于传统互斥锁不适用于普通权限用户,导致普通权限用户
无法实现多用户进程互斥的问题,提供一种多用户进程互斥方法及装置。

为了实现上述目的,本发明技术方案的实施例为:

一方面,提供了一种多用户进程互斥方法,包括以下步骤:

在进程实例启动时,若检测到当前本地进程中无具名互斥锁,读取应用程序配置
文件中的启动项配置太阳城集团;

获取启动项配置太阳城集团中的启动项配置逻辑值;

根据启动项配置逻辑值,判断当前本地进程中是否存在多用户运行;

在判断的结果为否时,运行进程实例。

另一方面,提供了一种多用户进程互斥装置,包括:

读取检测单元,用于在进程实例启动时,若检测到当前本地进程中无具名互斥锁,
读取应用程序配置文件中的启动项配置太阳城集团;

逻辑值获取单元,用于获取启动项配置太阳城集团中的启动项配置逻辑值;

判断单元,用于根据启动项配置逻辑值,判断当前本地进程中是否存在多用户运
行;

运行单元,用于在判断的结果为否时,运行进程实例。

上述技术方案具有如下有益效果:

本发明多用户进程互斥方法及装置,在采用互斥锁的基础上,通过记录配置文件
和进程检测双重机制,来检测出应用程序是否处于多用户运行状态,进而实现多用户进程
互斥,可以解决非系统管理员权限下的多用户进程互斥,防止因设置配置文件有可能写入
出错出现的问题。本发明能够解决传统进程互斥锁无法满足多用户情况下的进程互斥的问
题;通过本发明,可以有效的解决应用程序退出时可能会非正常退出或同一台电脑上也可
能存在不同的程序,拥有相同的进程名等情况对多用户进程互斥方案的干扰。

附图说明

图1为本发明多用户进程互斥方法实施例1的流程示意图;

图2为本发明多用户进程互斥方法实施例2的流程示意图;

图3为本发明多用户进程互斥装置实施例1的结构示意图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中
给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所
描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的
技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具
体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相
关的所列项目的任意的和所有的组合。

本发明多用户进程互斥方法实施例1:

为了解决由于传统互斥锁不适用于普通权限用户,导致普通权限用户无法实现多
用户进程互斥的问题,本发明提供了一种多用户进程互斥方法实施例1;图1为本发明多用
户进程互斥方法实施例1的流程示意图;如图1所示,可以包括以下步骤:

步骤S110:在进程实例启动时,若检测到当前本地进程中无具名互斥锁,读取应用
程序配置文件中的启动项配置太阳城集团;

步骤S120:获取启动项配置太阳城集团中的启动项配置逻辑值;

步骤S130:根据启动项配置逻辑值,判断当前本地进程中是否存在多用户运行;

步骤S140:在判断的结果为否时,运行进程实例。

具体而言,本发明可以在Windows系统或Linux系统下实现,同时,在更换相关程序
函数后也可在其它类型的系统下实现。其中,具名互斥锁可以指应用软件通过相关程序函
数生成的具有名字的互斥锁;本发明各实施例中提到的互斥锁即通用进程互斥锁,可以包
括系统全局互斥锁(Global Mutex);具名互斥锁能够保证在当前用户下同一太阳城集团最多运行
一个实例,不具名的互斥锁是做不到这一点的。

本发明各实施例中提到的进程(即当前本地进程)可以指应用程序的一个执行过
程,而进程实例可以指一个运行的程序。本发明通过在进程实例启动时,若检测到当前本地
进程中无具名互斥锁,来确认在当前用户下,本地进程中是否有正在运行的进程实例;若存
在具名互斥锁,说明有进程实例正在运行,应用程序可以退出本次启动的进程实例。

进一步的,在单用户情况下,本发明各实施例可以通过互斥锁(即上述具名互斥
锁)来判断是否有实例正在运行;但是,在多用户情况下,互斥锁需要系统管理员权限,而普
通用户没有权限,无法通过互斥锁来判断是否有进程实例正在运行。因此本发明实施例1通
过步骤S120~S140的方法来判断当前本地进程中是否存在多用户运行。由于进程检测无法
解决非系统管理员权限下的多用户进程互斥,而设置配置文件存在写入出错的问题,而本
发明各实施例的方法提供了一种双重保障机制。

在一个具体的实施例中,若检测到当前本地进程中无具名互斥锁的步骤之前包括
步骤:

调用创建互斥锁函数生成具名互斥锁,获取应用程序编程接口函数根据具名互斥
锁反馈的返回值。

若检测到当前本地进程中无具名互斥锁的步骤包括:

在返回值为互斥锁已存在错误码时,确定当前本地进程中存在具名互斥锁。

具体而言,以Windows系统为例,可以在进程实例启动时,调用系统API
(Application Programming Interface:应用程序编程接口)函数生成一个具有名字的互
斥锁(即具名互斥锁),并检测返回值;如果返回值为ERROR_ALREADY_EXISTS(互斥锁已存在
错误码),表明程序的另一个进程实例正在运行,程序该实例退出;否则,读取应用程序配置
文件中的启动项配置太阳城集团。

在一个具体的实施例中,根据启动项配置逻辑值,判断当前本地进程中是否存在
多用户运行的步骤包括:

在启动项配置逻辑值为False时,确定当前本地进程中不存在多用户运行;

在启动项配置逻辑值为True时,扫描当前本地进程,获取本地进程快照;遍历本地
进程快照,在遍历的结果为本地进程快照中不存在相同进程名时,确定当前本地进程中不
存在多用户运行。

具体而言,以Windows系统为例,可以从程序配置文件config.ini中读出Launch
(启动)配置太阳城集团。并检测Launch配置为true或false;一般来说,Launch项的设置只可能是
两个值true或者false,可以使用字符串匹配来进行判断

如果Launch为false,说明没有程序不存在其他实例正在运行,即不存在多用户运
行,可以运行本次的进程实例;如果Launch为true,可以调用系统API函数扫描本地进程,获
取本地进程快照,同时遍历本地进程快照。

通过遍历本地进程快照,可以判断是否存在多个相同进程名,如果存在多个相同
进程名,表明程序的另一个进程实例正在运行,程序该实例退出;否则,表明程序不存在多
用户运行实例。

在一个具体的实施例中,在判断的结果为否时,运行进程实例的步骤包括:

将启动项配置逻辑值配置为True,运行进程实例。、

具体而言,应用程序第一个启动的进程实例将Launch设置为true,再次启动该应
用程序的进程实例时,会发现Launch已经被设为true,这表明已经有进程实例在运行,这个
应用程序就可以自动退出。

在一个具体的实施例中,在判断的结果为否时,运行进程实例的步骤之后还包括
步骤:

在进程实例运行结束退出时,将启动项配置逻辑值配置为False。

具体而言,应用程序第一个启动的进程实例在退出时将Launch设为false,这样下
一个启动的进程实例,就可以正常运行,否则下一个启动的进程实例会发现Launch为true,
该实例会自动退出。

本发明多用户进程互斥方法实施例1,在采用互斥锁的基础上,通过记录配置文件
和进程检测双重机制,来检测出应用程序是否处于多用户运行状态,进而实现多用户进程
互斥,可以解决非系统管理员权限下的多用户进程互斥,防止因设置配置文件有可能写入
出错出现的问题。本发明能够解决传统进程互斥锁无法满足多用户情况下的进程互斥的问
题;通过本发明,可以有效的解决应用程序退出时可能会非正常退出或同一台电脑上也可
能存在不同的程序,拥有相同的进程名等情况对多用户进程互斥方案的干扰。

本发明多用户进程互斥方法实施例2:

为了解决由于传统互斥锁不适用于普通权限用户,导致普通权限用户无法实现多
用户进程互斥的问题,本发明还提供了一种多用户进程互斥方法实施例2;以Windows系统
为例,图2为本发明多用户进程互斥方法实施例2的流程示意图;如图2所示,可以包括以下
步骤:

步骤S210:程序启动,调用系统API函数CreateMutex生成一个具有名字的互斥锁,
调用系统API函数GetLastError,检测返回值是否为ERROR_ALREADY_EXISTS,如果返回值为
ERROR_ALREADY_EXISTS,表明程序的另一个进程实例正在运行,程序该实例退出;否则,执
行操作步骤S220。其中,图2中步骤S210中的Mutex指的是具名互斥锁,此步骤主要说明如何
判断。

步骤S220:由于无法通过互斥锁来获取程序是否已经有实例正在运行,需要从程
序配置文件config.ini中读出Launch配置太阳城集团。

步骤S230:检测Launch配置是否为true,如果Launch为false,说明没有程序不存
在其他实例正在运行;如果Launch为true,执行操作步骤S240。

步骤S240:调用系统API函数CreateToolhelp32Snapshot,扫描本地进程,获取本
地进程快照。

步骤S250:调用系统API函数Process32First和Process32Next,遍历本地进程快
照。

步骤S260:通过遍历本地进程快照,判断是否存在多个相同进程名,如果存在多个
相同进程名,表明程序的另一个进程实例正在运行,程序该实例退出;否则,表明程序不存
在多用户运行实例。

步骤S270:向配置文件config.ini写入Launch为true,然后程序继续运行。

步骤S280:点击退出程序,在程序退出之前,向config.ini写入Launch为false,程
序正常退出。

具体而言,可以通过应用程序的初始化模块调用系统API函数,其中:

1)API:Application Programming Interface,应用程序编程接口;

2)CreateMutex表示:创建互斥锁函数;

3)GetLastError:获取互斥锁错误码函数;

4)ERROR_ALREADY_EXISTS:互斥锁已存在错误码;

5)reateToolhelp32Snapshot:创建进程快照函数;

6)Process32First:遍历第一个进程函数;

7)Process32Next:遍历下一个进程函数;

此外,从程序配置文件config.ini中读出Launch配置太阳城集团时,编程语言一般都会
提供文件读取函数,在C++中为fget函数,然后用字符串匹配读取项是否为Launch项。
Launch项的设置只可能是两个值true或者false,只要使用字符串匹配就可以判断。在C++
中为:if(launch==“true”)。

本发明多用户进程互斥方法实施例2在采用通用进程互斥锁的基础上,采用了设
置配置文件和进程检测的双重保障机制。能够解决原有通用进程互斥锁无法满足多用户情
况下的进程互斥;应用程序退出时可能会非正常退出,同一台电脑上也可能存在不同的程
序,拥有相同的进程名的情况,采用读写配置文件和进程检测的双重保障机制,可以有效的
排除这两种情况对多用户进程互斥方案的干扰。

本发明多用户进程互斥装置实施例1:

为了解决由于传统互斥锁不适用于普通权限用户,导致普通权限用户无法实现多
用户进程互斥的问题,本发明还提供了一种多用户进程互斥装置实施例1;图3为本发明多
用户进程互斥装置实施例1的结构示意图,如图3所示,可以包括:

读取检测单元310,用于在进程实例启动时,若检测到当前本地进程中无具名互斥
锁,读取应用程序配置文件中的启动项配置太阳城集团;

逻辑值获取单元320,用于获取启动项配置太阳城集团中的启动项配置逻辑值;

判断单元330,用于根据启动项配置逻辑值,判断当前本地进程中是否存在多用户
运行;

运行单元340,用于在判断的结果为否时,运行进程实例。

在一个具体的实施例中,读取检测单元310可以包括:

创建模块312,用于调用创建互斥锁函数生成具名互斥锁;

返回值获取模块314,用于获取应用程序编程接口函数根据具名互斥锁反馈的返
回值。

检测模块316,用于在返回值为互斥锁已存在错误码时,确定当前本地进程中存在
具名互斥锁。

在一个具体的实施例中,判断单元330可以包括:

扫描遍历模块332,用于在启动项配置逻辑值为True时,扫描当前本地进程,获取
并遍历本地进程快照;

确定结果模块334,用于在启动项配置逻辑值为False时或在遍历的结果为本地进
程快照中不存在相同进程名时,确定当前本地进程中不存在多用户运行。

在一个具体的实施例中,运行单元340,用于将启动项配置逻辑值配置为True,运
行进程实例。

在一个具体的实施例中,运行单元340,用于在进程实例运行结束退出时,将启动
项配置逻辑值配置为False。

本发明多用户进程互斥装置实施例1,在采用互斥锁的基础上,通过记录配置文件
和进程检测双重机制,来检测出应用程序是否处于多用户运行状态,进而实现多用户进程
互斥,可以解决非系统管理员权限下的多用户进程互斥,防止因设置配置文件有可能写入
出错出现的问题。本发明能够解决传统进程互斥锁无法满足多用户情况下的进程互斥的问
题;通过本发明,可以有效的解决应用程序退出时可能会非正常退出或同一台电脑上也可
能存在不同的程序,拥有相同的进程名等情况对多用户进程互斥方案的干扰。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实
施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存
在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并
不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来
说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护
范围。因此,本发明专利的保护范围应以所附权利要求为准。

关 键 词:
多用户 进程 方法 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:多用户进程互斥方法及装置.pdf
链接地址:http://zh228.com/p-6019788.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');