CN112989289B - 软件许可证核查方法、装置、电子设备及可读存储介质 - Google Patents
软件许可证核查方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN112989289B CN112989289B CN201911212330.6A CN201911212330A CN112989289B CN 112989289 B CN112989289 B CN 112989289B CN 201911212330 A CN201911212330 A CN 201911212330A CN 112989289 B CN112989289 B CN 112989289B
- Authority
- CN
- China
- Prior art keywords
- value
- thread
- values
- calling
- service thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供一种软件许可证核查方法、装置、电子设备及可读存储介质,该方法包括:调用主线程获取软件许可证的第一值的总数以及软件许可证的第二值,第二值用于表征电子设备当前使用的软件许可证的数量总和,第二值由使用软件许可证的至少一个业务线程分别主动更新,第一值用于表征一个业务线程当前使用的软件许可证的数量总和,第一值由第一值对应的业务线程分别主动进行核查和更新;调用主线程根据第一值的总数以及第二值,对第二值进行核查,得到主线程的核查结果;若核查结果指示需要修正第二值,则调用主线程将第一值的总数作为修正后的第二值。该方法能够保证涉及License的软件的正常运行。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种软件许可证核查方法、装置、电子设备及可读存储介质。
背景技术
软件提供者通过软件许可证(License)向软件使用者授权,以使得软件使用者按照License所允许的方式使用软件。软件的License涉及软件的安装份数、使用时间、应用范围、功能模块等内容。软件的License可以为一个开关或者数量,作为软件的使用限制一起发布给客户。对于数量型License,软件在运行过程中维护一个License值,当指标消耗时,License值需要减少,当指标恢复时,License值需要增加,当License值为0时,则不允许用户使用该License对应的功能等。因此,License计算的准确性显得尤为重要。当License使用场景较为复杂时,例如在多进程、多线程、多流程等场景下,License值的计算结果可能存在错误,因此,需要对License值进行核查。
现有技术中,提出了一种同步核查License值的方法,当需要核查License值时,由发起核查的主线程锁死所有涉及改动License值的业务线程,并记录当前的总License值,进而,主线程依次遍历各业务线程,根据各业务线程的会话,确定各业务线程上实际使用的License值,并汇总所有业务线程的License值并与当前的总License值进行比较,如果当前的总License值与汇总的所有业务线程的License值的差异超过一定阈值,则根据汇总的所有业务线程的License值对当前的总License值进行修正。
但是,现有技术的方法需要暂停涉及改动License值的业务线程,可能影响软件的正常运行。
发明内容
本申请实施例提供一种软件许可证核查方法、装置、电子设备及可读存储介质,用于解决现有技术中核查License时需要暂停业务线程所导致的影响软件正常运行的问题。
第一方面,本申请实施例提供一种软件许可证核查方法,包括:
调用主线程获取软件许可证的第一值的总数以及所述软件许可证的第二值,所述第二值用于表征电子设备当前使用的所述软件许可证的数量总和,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,所述第一值用于表征一个业务线程当前使用的所述软件许可证的数量总和,所述第一值由所述第一值对应的业务线程分别主动进行核查和更新;
调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,所述主线程的核查结果用于指示是否需要修正所述第二值;
若所述主线程的核查结果指示需要修正所述第二值,则调用所述主线程将所述第一值的总数作为修正后的所述第二值。
作为一种可选的实现方式,所述第一值由所述第一值对应的业务线程分别主动进行核查,包括:
调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,所述业务线程的核查结果用于指示是否需要修正所述第一值;
若所述业务线程的核查结果指示需要修正所述第一值,则调用所述业务线程将所述业务线程上运行的业务的数量作为修正后的所述第一值。
作为一种可选的实现方式,所述调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,包括:
调用所述第一值对应的业务线程判断所述第一值与所述业务线程上运行的业务的数量的差值是否大于第一预设阈值,若是,则所述业务线程的核查结果指示需要修正所述第一值。
作为一种可选的实现方式,所述第一值由所述第一值对应的业务线程分别主动进行更新,包括:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第一值加一后的结果作为新的所述第一值。
作为一种可选的实现方式,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,包括:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第二值加一后的结果作为新的所述第二值。
作为一种可选的实现方式,所述调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,包括:
调用所述主线程判断所述第一值的总数与所述第二值的差值是否大于第二预设阈值,若是,则所述主线程的核查结果指示需要修正所述第二值。
第二方面,本申请实施例提供一种软件许可证核查装置,包括:
第一调用模块,用于调用主线程获取软件许可证的第一值的总数以及所述软件许可证的第二值,所述第二值用于表征电子设备当前使用的所述软件许可证的数量总和,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,所述第一值用于表征一个业务线程当前使用的所述软件许可证的数量总和,所述第一值由所述第一值对应的业务线程分别主动进行核查和更新;
第二调用模块,用于调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,所述主线程的核查结果用于指示是否需要修正所述第二值;
第三调用模块,用于在所述主线程的核查结果指示需要修正所述第二值时,调用所述主线程将所述第一值的总数作为修正后的所述第二值。
作为一种可选的实现方式,所述第一调用模块具体用于:
调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,所述业务线程的核查结果用于指示是否需要修正所述第一值;若所述业务线程的核查结果指示需要修正所述第一值,则调用所述业务线程将所述业务线程上运行的业务的数量作为修正后的所述第一值。
作为一种可选的实现方式,所述第一调用模块具体用于:
调用所述第一值对应的业务线程判断所述第一值与所述业务线程上运行的业务的数量的差值是否大于第一预设阈值,若是,则所述业务线程的核查结果指示需要修正所述第一值。
作为一种可选的实现方式,所述第一调用模块具体用于:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第一值加一后的结果作为新的所述第一值。
作为一种可选的实现方式,所述第一调用模块具体用于:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第二值加一后的结果作为新的所述第二值。
作为一种可选的实现方式,所述第二调用模块具体用于:
调用所述主线程判断所述第一值的总数与所述第二值的差值是否大于第二预设阈值,若是,则所述主线程的核查结果指示需要修正所述第二值。
第三方面,本申请实施例提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行上述第一方面所述的方法步骤。
第四方面,本申请实施例提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行上述第一方面所述的方法。
本申请实施例所提供的软件许可证核查方法、装置、电子设备及可读存储介质,由各业务线程进行二级核查,即分别对各业务线程使用的License总数,即第一值,进行核查,同时,各业务线程分别主动对电子设备使用的License总数,即第二值,进行更新。由主线程进行一级核查,基于各业务线程所核查过的各第一值的总数以及各业务线程共同更新的第二值,进行核查。由于第一值的核查是由各业务线程分别主动执行的,第二值也由各业务线程分别主动更新,因此,主线程可以直接使用各业务线程核查过的各第一值以及各业务线程更新的第二值,对第二值进行核查,而无需中断各业务线程,因此,能够保证涉及License的软件的正常运行。另外,二级核查和一级核查分别执行,业务线程同时对第一值和第二值更新,时间上的差异极小。业务线程所核查的第一值仅是一个值,不需要去统计业务,很容易获得,因此第一级核查获取第二值和各第一值的时间很小,因此两者之间的误差很小。同时,二级核查是业务线程内会话与第一值的核查,是一一对应的,因此准确性高。因此,还能够保证License核查的准确性高。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例涉及的系统架构示例图;
图2为本申请实施例提供的一种软件许可证核查方法的流程示意图;
图3为本申请实施例提供的一种软件许可证核查方法的流程示意图;
图4为本申请实施例提供的一种软件许可证核查装置的模块结构图;
图5为本申请实施例提供的一种电子设备500的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本申请实施例涉及的系统架构示例图,电子设备在运行过程中,可能在多个业务线程中使用某一个License。如图1所示例的,每一个业务线程中进行该License对应的会话,每开启一个会话,业务线程对自己所对应的License值进行更新,该更新可以为对License值加一。同时,每个业务线程可以周期性对自己所对应的License值进行核查,称为二级核查。同时,如图1所示例的,电子设备中维护一个总License值,表示电子设备中使用该License的总数,由电子设备中的一个主线程对该总License值进行核查,称为一级核查。本申请实施例结合上述二级核查和一级核查,实现对上述License的核查。
应理解,上述图1所示的电子设备可以为任何需要使用数量型License的电子设备,例如台式电脑、笔记本电脑、手机等,本申请实施例对此不作具体限定。
图2为本申请实施例提供的一种软件许可证核查方法的流程示意图,该方法的执行主体为上述的电子设备,具体可以为电子设备的处理器。如图2所示,该方法包括:
S201、调用主线程获取软件许可证的第一值的总数以及该软件许可证的第二值,该第二值用于表征电子设备当前使用的该软件许可证的数量总和,该第二值由使用该软件许可证的至少一个业务线程分别更新,该第一值用于表征一个业务线程当前使用的该软件许可证的数量总和,第一值由该第一值对应的业务线程分别进行核查和更新。
可选的,上述软件许可证(以下均称为License)可以为电子设备所使用的任意一种数量型License。
上述第一值是指在各业务线程上所维护的License值,表示一个业务线程上所使用的License数量。业务线程的数量可能为一个,也可能为多个。相应的,上述第一值可以为多个值,也可以为一个值。具体的,如果业务线程的数量为一个,则第一值的总数为该业务线程的第一值,即该业务线程所使用的License数量。如果业务线程的数量为多个,则第一值的总数为所有业务线程的第一值之和,即所有业务线程所使用的License数量之和。
对于每个业务线程来说,可以分别执行如下三种操作:
第一,对第一值进行更新。
业务线程可以按照该业务线程所新增或关闭的会话来对第一值进行更新,具体过程将在下述实施例中说明。
可选的,业务线程对第一值进行更新,可以通过事件触发方式执行。该事件具体可以为新增会话或关闭会话。
第二,对第一值进行核查。
业务线程对自己所对应的第一值主动进行核查,即前述的二级核查。经过二级核查,可以保证业务线程所维护的License值的准确性。对第一值进行核查的具体过程将在下述实施例中说明。
可选的,业务线程的二级核查可以按照特定的周期执行。处理器在每个周期开始或结束时,调用业务线程对第一值进行核查。
第三,对第二值进行更新。
如上所述,第二值表示电子设备当前使用的上述License的数量总和,即总License数。本申请实施例中,由各业务线程对第二值进行更新。具体的,各业务线程更新第二值的时机与更新第一值的时机相同。例如,需要为第一值加一时,相应为第二值加一;需要为第一值减一时,相应为第二值减一。
基于上述三点,应理解,对第一值的更新和对第一值的核查相互独立。具体的,对第一值的更新通过事件触发,对第一值的核查按照预设的周期执行。
可选的,上述更新第一值和更新第二值可以同时执行。
S202、调用主线程根据上述第一值的总数以及上述第二值,对上述第二值进行核查,得到主线程的核查结果,该主线程的核查结果用于指示是否需要修正上述第二值。
一种示例中,可以调用主线程判断第一值的总数与第二值的差值是否大于第二预设阈值,若是,则主线程的核查结果指示需要修正第二值。
具体的,主线程被调用后,读取当前的第二值,并统计各业务线程的第一值的总数,即统计各业务线程的第一值的和。进而,主线程对该第二值和该第一值的总数进行比较,如果二者的差异大于上述的第二预设阈值,说明当前保存的第二值需要进行修正,继续执行下述步骤S203进行修正。如果二者的差异小于等于上述第二预设阈值,说明当前保存的第二值不需要进行修正,则业务线程不再执行下述步骤的步骤S203。
S203、若主线程的核查结果指示需要修正上述第二值,则调用主线程将上述第一值的总数作为修正后的上述第二值。
上述步骤S201-S203为对第二值进行核查的过程,即上述的一级核查的过程。在一级核查中,由主线程根据第一值的总数以及第二值对第二值进行核查,而每个第一值由各业务线程分别主动进行核查。因此,主线程在核查时,直接使用各业务线程核查过的第一值对第二值进行核查。因此,主线程无需中断业务线程。
可选的,主线程的一级核查可以按照特定的周期执行。处理器在每个周期开始或结束时,调用主线程对第二值进行核查。
可选的,上述一级核查的周期和上述二级核查的周期可以相同。
一种示例中,对于一个周期来说,二级核查的周期的起始时间可以早于一级核查的周期的起始时间,二级核查的周期时长可以等于一级核查的周期时长。
另一种示例中,对于一个周期来说,二级核查的周期的起始时间可以早于一级核查的周期的起始时间,二级核查的周期时长可以小于一级核查的周期时长。
本实施例中,由各业务线程进行二级核查,即分别对各业务线程使用的License总数,即第一值,进行核查,同时,各业务线程分别主动对电子设备使用的License总数,即第二值,进行更新。由主线程进行一级核查,基于各业务线程所核查过的各第一值的总数以及各业务线程共同更新的第二值,进行核查。由于第一值的核查是由各业务线程分别主动执行的,第二值也由各业务线程分别主动更新,因此,主线程可以直接使用各业务线程核查过的各第一值以及各业务线程更新的第二值,对第二值进行核查,而无需中断各业务线程,因此,能够保证涉及License的软件的正常运行。
另外,二级核查和一级核查分别执行,业务线程同时对第一值和第二值更新,时间上的差异极小。业务线程所核查的第一值仅是一个值,不需要去统计业务,很容易获得,因此第一级核查获取第二值和各第一值的时间很小,因此两者之间的误差很小。同时,二级核查是业务线程内会话与第一值的核查,是一一对应的,因此准确性高。因此,本实施例还能够保证License核查的准确性高。
以下说明调用业务线程对第一值进行核查的一种可选方式。
图3为本申请实施例提供的一种软件许可证核查方法的流程示意图,如图3所示,调用业务线程对第一值进行核查的一种可选方式包括:
S301、调用上述第一值对应的业务线程根据上述第一值以及上述业务线程上运行的业务的数量,对上述第一值进行核查,得到业务线程的核查结果,该业务线程的核查结果用于指示是否需要修正上述第一值。
可选的,处理器可以按照前述的二级核查的周期调用各业务线程。一种示例性中,处理器可以同时调用使用上述License的所有业务线程。每个业务线程上均维护一个第一值。业务线程被调用后,基于当前的第一值以及业务线程上运行的业务的数量,对第一值进行核查。
应理解,上述的业务线程上运行的业务,是指业务线程上运行的需要使用上述License的业务。
在对上述第一值核查时,一种可选方式中,调用第一值对应的业务线程判断第一值与业务线程上运行的业务的数量的差值是否大于第一预设阈值,若是,则业务线程的核查结果指示需要修正第一值。
具体的,业务线程被调用后,读取当前的第一值,并统计当前运行的业务的数量,对该第一值和该数量进行比较,如果二者的差异大于上述的第一预设阈值,说明当前保存的第一值需要进行修正,继续执行下述步骤S302进行修正。如果二者的差异小于等于上述第一预设阈值,说明当前保存的第一值不需要进行修正,则业务线程不再执行下述步骤的步骤S302。
S302、若上述业务线程的核查结果指示需要修正上述第一值,则调用上述业务线程将上述业务线程上运行的业务的数量作为修正后的上述第一值。
如果需要修正第一值,则业务线程可以直接将当前的第一值修改为业务线程上当前运行的业务的数量,得到新的第一值。业务线程上当前运行的业务的数量能够表示该业务线程实际使用的License总数,因此,将该值作为新的第一值,能够保证新的第一值的准确性。
以下说明调用业务线程对第一值进行更新的一种可选方式。
业务线程上可能随时新增或关闭需要使用上述License的业务,因此,业务线程可在新增或关闭业务时,对第一值进行更新。
一种可选方式中,如果第一值对应的业务线程上新增上述License对应的会话,则调用第一值对应的业务线程将第一值加一后的结果作为新的第一值。
如果业务线程上新增上述License对应的会话,说明License的使用总数有增加,因此,由业务线程对当前的第一值加一,得到新的第一值。
相应的,另一种可选方式中,如果业务线程上关闭上述License对应的会话,说明License的使用总数有减少,因此,处理器可以调用第一值对应的业务线程将第一值减一后的结果作为新的第一值。
应理解,本申请实施例所述的License对应的会话,是指会使用该License的会话。
以下说明调用业务线程对第二值进行更新的一种可选方式。
如前文所述,上述第二值表示电子设备上使用的上述License的总数。因此,业务线程上新增或关闭业务时,需要同步更新该第二值。
一种可选方式中,如果第一值对应的业务线程上新增上述License对应的会话,则调用第一值对应的业务线程将第二值加一后的结果作为新的第二值。
相应的,另一种可选方式中,如果第一值对应的业务线程上关闭上述License对应的会话,则调用第一值对应的业务线程将第二值减一后的结果作为新的第二值。
应理解,本申请实施例所述的关闭会话,是指业务线程上不再运行该会话,即不会占用一个License值。
图4为本申请实施例提供的一种软件许可证核查装置的模块结构图,如图4所示,该装置包括:
第一调用模块401,用于调用主线程获取软件许可证的第一值的总数以及所述软件许可证的第二值,所述第二值用于表征电子设备当前使用的所述软件许可证的数量总和,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,所述第一值用于表征一个业务线程当前使用的所述软件许可证的数量总和,所述第一值由所述第一值对应的业务线程分别主动进行核查和更新。
第二调用模块402,用于调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,所述主线程的核查结果用于指示是否需要修正所述第二值。
第三调用模块403,用于在所述主线程的核查结果指示需要修正所述第二值时,调用所述主线程将所述第一值的总数作为修正后的所述第二值。
作为一种可选的实施方式,第一调用模块401具体用于:
调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,所述业务线程的核查结果用于指示是否需要修正所述第一值;若所述业务线程的核查结果指示需要修正所述第一值,则调用所述业务线程将所述业务线程上运行的业务的数量作为修正后的所述第一值。
作为一种可选的实施方式,第一调用模块401具体用于:
调用所述第一值对应的业务线程判断所述第一值与所述业务线程上运行的业务的数量的差值是否大于第一预设阈值,若是,则所述业务线程的核查结果指示需要修正所述第一值。
作为一种可选的实施方式,第一调用模块401具体用于:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第一值加一后的结果作为新的所述第一值。
作为一种可选的实施方式,第一调用模块401具体用于:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第二值加一后的结果作为新的所述第二值。
作为一种可选的实施方式,第二调用模块402具体用于:
调用所述主线程判断所述第一值的总数与所述第二值的差值是否大于第二预设阈值,若是,则所述主线程的核查结果指示需要修正所述第二值。
本申请实施例提供的软件许可证核查装置,可以执行上述方法实施例中的方法步骤,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,第一调用模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上第一调用的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图5为本申请实施例提供的一种电子设备500的结构示意图。如图5所示,该电子设备可以包括:处理器51、存储器52、通信接口53和系统总线54,所述存储器52和所述通信接口53通过所述系统总线54与所述处理器51连接并完成相互间的通信,所述存储器52用于存储计算机执行指令,所述通信接口53用于和其他设备进行通信,所述处理器51执行所述计算机程序时实现如上述图2至图3所示实施例的方案。
该图5中提到的系统总线可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选的,本申请实施例还提供一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上述图2至图3所示实施例的方法。
可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行上述图2至图3所示实施例的方法。
本申请实施例还提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在存储介质中,至少一个处理器可以从所述存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序时可实现上述图2至图3所示实施例的方法。
在本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中,a,b,c可以是单个,也可以是多个。
可以理解的是,在本申请实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围。
可以理解的是,在本发明的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种软件许可证核查方法,其特征在于,包括:
调用主线程获取软件许可证的第一值的总数以及所述软件许可证的第二值,所述第二值用于表征电子设备当前使用的所述软件许可证的数量总和,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,所述第一值用于表征一个业务线程当前使用的所述软件许可证的数量总和,所述第一值由所述第一值对应的业务线程分别主动进行核查和更新;
调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,所述主线程的核查结果用于指示是否需要修正所述第二值;
若所述主线程的核查结果指示需要修正所述第二值,则调用所述主线程将所述第一值的总数作为修正后的所述第二值;
所述第一值由所述第一值对应的业务线程分别主动进行核查,包括:
调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,所述业务线程的核查结果用于指示是否需要修正所述第一值;
若所述业务线程的核查结果指示需要修正所述第一值,则调用所述业务线程将所述业务线程上运行的业务的数量作为修正后的所述第一值。
2.根据权利要求1所述的方法,其特征在于,所述调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,包括:
调用所述第一值对应的业务线程判断所述第一值与所述业务线程上运行的业务的数量的差值是否大于第一预设阈值,若是,则所述业务线程的核查结果指示需要修正所述第一值。
3.根据权利要求1或2所述的方法,其特征在于,所述第一值由所述第一值对应的业务线程分别主动进行更新,包括:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第一值加一后的结果作为新的所述第一值。
4.根据权利要求1或2所述的方法,其特征在于,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,包括:
若所述第一值对应的业务线程上新增所述软件许可证对应的会话,则调用所述第一值对应的业务线程将第二值加一后的结果作为新的所述第二值。
5.根据权利要求1或2所述的方法,其特征在于,所述调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,包括:
调用所述主线程判断所述第一值的总数与所述第二值的差值是否大于第二预设阈值,若是,则所述主线程的核查结果指示需要修正所述第二值。
6.一种软件许可证核查装置,其特征在于,包括:
第一调用模块,用于调用主线程获取软件许可证的第一值的总数以及所述软件许可证的第二值,所述第二值用于表征电子设备当前使用的所述软件许可证的数量总和,所述第二值由使用所述软件许可证的至少一个业务线程分别主动更新,所述第一值用于表征一个业务线程当前使用的所述软件许可证的数量总和,所述第一值由所述第一值对应的业务线程分别主动进行核查和更新;
第二调用模块,用于调用所述主线程根据所述第一值的总数以及所述第二值,对所述第二值进行核查,得到主线程的核查结果,所述主线程的核查结果用于指示是否需要修正所述第二值;
第三调用模块,用于在所述主线程的核查结果指示需要修正所述第二值时,调用所述主线程将所述第一值的总数作为修正后的所述第二值;
所述第一调用模块具体用于:
调用所述第一值对应的业务线程根据所述第一值以及所述业务线程上运行的业务的数量,对所述第一值进行核查,得到业务线程的核查结果,所述业务线程的核查结果用于指示是否需要修正所述第一值;若所述业务线程的核查结果指示需要修正所述第一值,则调用所述业务线程将所述业务线程上运行的业务的数量作为修正后的所述第一值。
7.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,执行权利要求1-5任一项所述的方法步骤。
8.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911212330.6A CN112989289B (zh) | 2019-12-02 | 2019-12-02 | 软件许可证核查方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911212330.6A CN112989289B (zh) | 2019-12-02 | 2019-12-02 | 软件许可证核查方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989289A CN112989289A (zh) | 2021-06-18 |
CN112989289B true CN112989289B (zh) | 2023-04-25 |
Family
ID=76331059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911212330.6A Active CN112989289B (zh) | 2019-12-02 | 2019-12-02 | 软件许可证核查方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989289B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013077338A (ja) * | 2013-01-31 | 2013-04-25 | Ricoh Co Ltd | ライセンス管理システム |
CN103347090A (zh) * | 2013-07-17 | 2013-10-09 | 成都盈锐科技有限公司 | 一种基于企业网络的软件许可证管理系统 |
CN107885980A (zh) * | 2017-12-06 | 2018-04-06 | 武汉万创科技有限公司 | 一种软件管理方法及系统 |
CN108574593A (zh) * | 2017-03-13 | 2018-09-25 | 华为技术有限公司 | 一种nfv网络中许可证的管理系统 |
CN109561133A (zh) * | 2018-10-23 | 2019-04-02 | 深圳壹账通智能科技有限公司 | 业务处理方法、装置、设备及计算机可读存储介质 |
CN109874115A (zh) * | 2017-12-05 | 2019-06-11 | 中兴通讯股份有限公司 | 许可证调整方法及装置 |
CN109933959A (zh) * | 2017-12-19 | 2019-06-25 | 华为技术有限公司 | 一种许可证控制方法及相关设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001222424A (ja) * | 2000-02-08 | 2001-08-17 | Fujitsu Ltd | ソフトウェアライセンス管理装置,ソフトウェアライセンス管理方法およびソフトウェアライセンス管理用プログラム記録媒体 |
US7359882B2 (en) * | 2001-05-11 | 2008-04-15 | Bea Systems, Inc. | Distributed run-time licensing |
CN1750477A (zh) * | 2004-09-16 | 2006-03-22 | 华为技术有限公司 | 一种在智能网中进行许可管理的系统和方法 |
US7467404B2 (en) * | 2004-09-27 | 2008-12-16 | Bally Garning, Inc. | System and method for distributing software licenses |
CN100449562C (zh) * | 2006-09-30 | 2009-01-07 | 华为技术有限公司 | 一种License控制方法及装置 |
CN101764852B (zh) * | 2008-12-24 | 2013-04-24 | 华为技术有限公司 | 一种许可证控制方法、系统及服务器 |
CN103186738A (zh) * | 2011-12-30 | 2013-07-03 | 英业达集团(天津)电子技术有限公司 | 软件资源的软件许可证管控方法、系统及创建和启动装置 |
CN103279696A (zh) * | 2013-06-03 | 2013-09-04 | 中国科学院微电子研究所 | EDA软件的License监控方法和系统 |
CN107645388A (zh) * | 2016-07-20 | 2018-01-30 | 上海中兴软件有限责任公司 | 一种实现电信设备入网控制的方法、客户端及服务器 |
-
2019
- 2019-12-02 CN CN201911212330.6A patent/CN112989289B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013077338A (ja) * | 2013-01-31 | 2013-04-25 | Ricoh Co Ltd | ライセンス管理システム |
CN103347090A (zh) * | 2013-07-17 | 2013-10-09 | 成都盈锐科技有限公司 | 一种基于企业网络的软件许可证管理系统 |
CN108574593A (zh) * | 2017-03-13 | 2018-09-25 | 华为技术有限公司 | 一种nfv网络中许可证的管理系统 |
CN109874115A (zh) * | 2017-12-05 | 2019-06-11 | 中兴通讯股份有限公司 | 许可证调整方法及装置 |
CN107885980A (zh) * | 2017-12-06 | 2018-04-06 | 武汉万创科技有限公司 | 一种软件管理方法及系统 |
CN109933959A (zh) * | 2017-12-19 | 2019-06-25 | 华为技术有限公司 | 一种许可证控制方法及相关设备 |
CN109561133A (zh) * | 2018-10-23 | 2019-04-02 | 深圳壹账通智能科技有限公司 | 业务处理方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112989289A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090536B (zh) | 一种获取内存泄露信息的方法、装置、介质和电子设备 | |
US7870443B2 (en) | Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger | |
CN109408452B (zh) | 拟态工控处理器及数据处理方法 | |
EP2842041A1 (en) | Data processing system and method for operating a data processing system | |
US10037212B2 (en) | Information processing device and method for protecting data in a call stack | |
JP2009514084A (ja) | リセット装置を具えたデータ処理装置 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN109445937B (zh) | 一种组件化编程及无缝执行方法 | |
CN116909943B (zh) | 一种缓存访问方法、装置、存储介质及电子设备 | |
US20190377565A1 (en) | Reducing buffer overflow | |
CN110599305A (zh) | 业务处理方法、装置及存储介质 | |
US7360114B2 (en) | Logging of exception data | |
CN105426231A (zh) | 多进程处理装置和多进程处理方法 | |
US20180285559A1 (en) | Stack pivot detection systems and methods | |
CN112989289B (zh) | 软件许可证核查方法、装置、电子设备及可读存储介质 | |
CN116933702B (zh) | 一种验证方法、装置、电子设备及可读存储介质 | |
US8909835B2 (en) | Computer system and method of controlling computer system | |
CN113687949A (zh) | 服务器部署方法、装置、部署设备及存储介质 | |
US20140149781A1 (en) | Method for Batch Execution of System Calls in an Operating System | |
CN111966383A (zh) | 一种操作系统内核兼容性量化分析方法、系统和介质 | |
US20130054988A1 (en) | Integrated circuit device, signal processing system and method for managing power resources of a signal processing system | |
CN110096315B (zh) | 一种组件加载方法和装置 | |
US20210191867A1 (en) | Hardware Accelerator Automatic Detection of Software Process Migration | |
US11169842B1 (en) | Cloud thread synchronization | |
CN114827016B (zh) | 切换链路聚合方案的方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |