CN105204928A - 一种共享资源访问方法及系统 - Google Patents
一种共享资源访问方法及系统 Download PDFInfo
- Publication number
- CN105204928A CN105204928A CN201510727614.4A CN201510727614A CN105204928A CN 105204928 A CN105204928 A CN 105204928A CN 201510727614 A CN201510727614 A CN 201510727614A CN 105204928 A CN105204928 A CN 105204928A
- Authority
- CN
- China
- Prior art keywords
- shared resource
- request message
- message queue
- message
- module
- 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.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种共享资源访问方法及系统,所述共享资源访问方法包括:封装所述共享资源和为所述共享资源对应设置的消息队列,在请求访问共享资源时生成请求消息;通过调用接口将所述请求消息添加至封装的所述消息队列中;在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源,其中,通过调用接口向所述请求消息的请求者提供封装的所述共享资源。本发明通过基于消息队列的形式访问共享资源,在每一个消息从所述消息队列中取出时访问共享资源,使得访问所述共享资源的时候无需考虑线程或进程同步,避免了由于同步机制产生的各种问题。
Description
技术领域
本发明涉及网络技术领域,特别是共享资源管理控制技术领域,具体为一种共享资源访问方法及系统。
背景技术
软件产品中,为达到多任务并发执行的目的,操作系统会采用多线程或者多进程的方式实现,线程或进程即实现某一具体功能的实体。在线程或者进程运行过程中通常会从一些系统资源中读取数据或者向系统资源写入数据,这些多个线程或进程都可以读写的系统资源称为共享资源。一个读或者写操作在机器语言层面往往是由多个机器指令完成,而这一过程中如果其他线程或进程也试图读写这些数据,则会出现读出或者写入的数据错误。为了避免上述这种情况的发生,在多线程或者多进程软件产品中要用锁,信号量等同步机制,即在一个线程或进程访问同一共享资源的时候其他线程或者进程不能做相同或相似的问以免影响到当前访问。由于在软件产品的设计中多进程或多线程并发执行是很常见的,多个进程或线程要访问一个共享资源时一般都要对这一共享资源加锁以达到独享的目的。这一进程或线程的同步机制很容易带来潜在问题且产品代码较难维护。
此外,上述技术方案还有以下缺点:1)增加代码复杂度,共享资源访问的时候都需要考虑线程或进程同步;2)增加代码的耦合性,不适合功能扩展;3)降低产品的健壮性,同步机制出现bug的现象很常见,且有的很难彻底解决;4)增加产品维护的成本,机制的复杂导致很难维护。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种共享资源访问方法及系统,用于解决现有技术中共享资源的访问需要同时协调线程或进程同步的问题。
为实现上述目的及其他相关目的,本发明提供一种共享资源访问方法,所述共享资源访问方法包括:在请求访问共享资源时生成请求消息;将所述请求消息添加至为所述共享资源设置的消息队列中;在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。
作为本发明的一种优选方案,所述共享资源访问方法还包括:封装所述共享资源和为所述共享资源对应设置的消息队列。
作为本发明的一种优选方案,通过调用接口将所述请求消息添加至封装的所述消息队列中和向所述请求消息的请求者提供封装的所述共享资源。
作为本发明的一种优选方案,所述接口通过进程间或线程间通信提供。
作为本发明的一种优选方案,所述请求消息至少包括访问方式和请求者ID。
为实现上述目的,本发明还提供一种共享资源访问系统,所述共享资源访问系统包括:请求消息生成模块,用于在请求访问共享资源时生成请求消息;消息队列模块,用于为每一个所述共享资源设置对应的消息队列;添加模块,分别与所述请求消息生成模块和所述消息队列模块相连,用于将所述请求消息添加至为所述共享资源设置的消息队列中;访问模块,与所述消息队列模块相连,在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。
作为本发明的一种优选方案,所述共享资源访问系统还包括:分别与所述共享资源和所述消息队列模块相连的封装模块,用于封装所述共享资源和与所述共享资源对应的消息队列。
作为本发明的一种优选方案,所述共享资源访问系统还包括:与所述封装模块相连的接口调用模块,用于通过调用接口将所述请求消息添加至封装的所述消息队列中和向所述请求消息的请求者提供封装的所述共享资源。
作为本发明的一种优选方案,所述共享资源访问系统还包括:与所述接口调用模块相连的接口提供模块,用于通过进程间或线程间通信提供所述接口。
作为本发明的一种优选方案,所述请求消息至少包括访问方式和请求者ID。
如上所述,本发明的一种共享资源访问方法及系统,具有以下有益效果:
1、本发明通过基于消息队列的形式访问共享资源,在每一个消息从所述消息队列中取出时访问共享资源,使得访问所述共享资源的时候无需考虑线程或进程同步,避免了由于同步机制产生的各种问题。
2、本发明可以降低代码复杂度和耦合度,简单的处理逻辑降低了产品维护的成本。
3、本发明简单高效,具有较强的通用性和实用性。
附图说明
图1显示为本发明的共享资源访问方法的流程示意图。
图2显示为本发明的共享资源访问方法在一实施例中的流程示意图。
图3显示为本发明的共享资源访问中共享资源访问的示意图。
图4显示为本发明的共享资源访问中通过接口访问封装的共享资源的示意图。
图5显示为本发明的共享资源访问系统的结构示意图。
元件标号说明
1共享资源访问系统
11封装模块
12消息队列模块
13请求消息生成模块
14添加模块
15访问模块
16接口调用模块
17接口提供模块
S11~S13步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅图1至图5,本实施例的目的在于提供一种共享资源访问方法及系统,用于解决现有技术中共享资源的访问需要同时协调线程或进程同步的问题。以下将详细阐述本发明的一种共享资源访问方法及系统的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本发明的一种共享资源访问方法及系统。
本实施例提供一种共享资源访问方法及系统基于消息队列机制,代替了线程或者进程的同步,抛弃同步机制,使访问者按照先到先处理的规则访问共享资源,解决的问题就是在多进程或多线程环境中解决这种同步机制的困扰。其中,在本实施例中,所述共享资源是指:在线程或者进程运行过程中通常会从一些系统资源中读取数据或者向系统资源写入数据,这些多个线程或进程都可以读写的系统资源称为共享资源,也称为关键资源。
本实施例提供一种共享资源访问方法,具体地,如图1所示,所述共享资源访问方法包括以下步骤。
步骤S11,在请求访问共享资源时生成请求消息。
步骤S12,将所述请求消息添加至为所述共享资源设置的消息队列中。
步骤S13,在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。
如图1和图2所示,以下对步骤S11至步骤S13进行详细说明。
步骤S11,在请求访问共享资源时生成请求消息。具体地,在本实施例中,所述请求消息至少包括访问方式和请求者ID,其中,所述访问方式为读取数据或写入数据。
在本实施例中,所述共享资源访问方法还包括:封装所述共享资源和为所述共享资源对应设置的消息队列。所以在本实施例中,在实施步骤S11之前,将所述共享资源和为所述共享资源对应设置的消息队列封装。
步骤S12,将所述请求消息添加至为所述共享资源设置的消息队列中。其中,每一个共享资源对应一个消息队列,每一个请求消息按照时间先后顺序依次添加至与所要访问的共享资源对应的消息队列中。对共享资源的使用者来说只需要关注消息队列就可以了。
将所述共享资源和为所述共享资源对应设置的消息队列封装后,可以通过调用接口将所述请求消息添加至封装的所述消息队列中,也就是说,共享资源使用者访问共享资源时可以通过调用接口将对共享资源的访问方式(读/写)和使用者ID传入到封装的消息队列中。
其中,所述接口为通过进程间或线程间通信提供的请求接口。
步骤S13,在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。
通过调用接口向所述请求消息的请求者提供封装的所述共享资源,也就是说,可以通过调用接口把访问结果返回给使用者。其中,所述接口为通过进程间或线程间通信提供的返回接口。
由上可见,本实施例中的共享资源访问方法的实施过程简单来说就是如下过程:如图3所示,共享资源使用者在需要访问共享资源的时候会生成一个消息,放入操作系统提供的消息队列中,每一个消息出队列后将对共享资源进行访问,当这一访问结束后下一个消息才出队列被执行。
为使本领域技术人员进一步理解本实施例中的共享资源访问方法,如图4所示,以下将进一步说明本实施例中共享资源访问方法的实施过程。
首先将所述共享资源和为所述共享资源对应设置的消息队列封装,并通过进程间或线程间通信提供两个接口(包括请求接口和返回接口)供共享资源使用者调用。共享资源使用者在请求访问共享资源时生成包括访问方式和请求者ID的请求消息,之后调用请求接口,传入包括访问方式和请求者ID的请求消息,在资源封装内部,请求消息被加入消息队列。在所述请求消息从所述消息队列中取出时,即访问共享资源,在资源封装内部,通过返回接口返回结果给使用者,向所述请求消息的请求者提供所述共享资源。通过每一个消息从所述消息队列中取出时访问共享资源,使得访问所述共享资源的时候无需考虑线程或进程同步,避免了由于同步机制产生的各种问题。
为实现上述目的,本发明还提供一种共享资源访问系统,具体地,如图5所示,所述共享资源访问系统1包括:封装模块11,消息队列模块12,请求消息生成模块13,添加模块14,访问模块15,接口调用模块16和接口提供模块17。
以下对上述各模块进行详细说明。
所述请求消息生成模块13用于在请求访问共享资源时生成请求消息;具体地,在本实施例中,所述请求消息至少包括访问方式和请求者ID,其中,所述访问方式为读取数据或写入数据。
所述消息队列模块12用于为每一个所述共享资源设置对应的消息队列;其中,每一个共享资源对应一个消息队列,每一个请求消息按照时间先后顺序依次添加至与所要访问的共享资源对应的消息队列中。对共享资源的使用者来说只需要关注消息队列就可以了。
所述添加模块14分别与所述请求消息生成模块13和所述消息队列模块12相连,用于将所述请求消息添加至为所述共享资源设置的消息队列中。
所述封装模块11分别与所述共享资源和所述消息队列模块12相连,用于封装所述共享资源和与所述共享资源对应的消息队列。在访问共享数据之前,所述封装模块11首先将所述共享资源和为所述共享资源对应设置的消息队列封装。所述接口调用模块16与所述封装模块11相连,用于通过调用接口将所述请求消息添加至封装的所述消息队列中和向所述请求消息的请求者提供封装的所述共享资源。
具体地,在本实施例中,所述接口调用模块16调用的接口包括:请求接口和返回接口。
将所述共享资源和为所述共享资源对应设置的消息队列封装后,可以通过调用接口将所述请求消息添加至封装的所述消息队列中,也就是说,共享资源使用者访问共享资源时可以通过调用接口将对共享资源的访问方式(读/写)和使用者ID传入到封装的消息队列中。
所述接口提供模块17与所述接口调用模块16相连,用于通过进程间或线程间通信提供所述接口。
所述访问模块15与所述消息队列模块12相连,在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。通过所述接口调用模块16调用接口向所述请求消息的请求者提供封装的所述共享资源,也就是说,可以通过调用接口把访问结果返回给使用者。其中,所述接口为通过进程间或线程间通信提供的返回接口。
由上可见,本实施例中的共享资源访问系统1的工作过程简单来说就是如下过程:共享资源使用者在需要访问共享资源的时候,所述请求消息生成模块13会生成一个消息,所述添加模块14将该消息放入消息队列模块12的消息队列中,每一个消息出队列后访问模块15将对共享资源进行访问,当这一访问结束后下一个消息才出队列被执行。
为使本领域技术人员进一步理解本实施例中的共享资源访问系统1,以下将进一步说明本实施例中共享资源访问系统1的工作过程。
首先通过所述封装模块11将所述共享资源和为所述共享资源对应设置的消息队列封装,并由所述接口提供模块17通过进程间或线程间通信提供两个接口(包括请求接口和返回接口)供所述接口调用模块16调用。共享资源使用者在请求访问共享资源时,所述请求消息生成模块13生成包括访问方式和请求者ID的请求消息,之后所述接口调用模块16调用请求接口,传入包括访问方式和请求者ID的请求消息,在资源封装内部,所述添加模块14将请求消息加入消息队列。在所述请求消息从所述消息队列中取出时,通访问模块15即访问共享资源,在资源封装内部,通过返回接口返回结果给使用者,向所述请求消息的请求者提供所述共享资源。通过每一个消息从所述消息队列中取出时访问共享资源,使得访问所述共享资源的时候无需考虑线程或进程同步,避免了由于同步机制产生的各种问题。
综上所述,本发明通过基于消息队列的形式访问共享资源,在每一个消息从所述消息队列中取出时访问共享资源,使得访问所述共享资源的时候无需考虑线程或进程同步,避免了由于同步机制产生的各种问题;本发明可以降低代码复杂度和耦合度,简单的处理逻辑降低了产品维护的成本;本发明简单高效,具有较强的通用性和实用性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种共享资源访问方法,其特征在于:所述共享资源访问方法包括:
在请求访问共享资源时生成请求消息;
将所述请求消息添加至为所述共享资源设置的消息队列中;
在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。
2.根据权利要求1所述的共享资源访问方法,其特征在于:所述共享资源访问方法还包括:封装所述共享资源和为所述共享资源对应设置的消息队列。
3.根据权利要求2所述的共享资源访问方法,其特征在于:通过调用接口将所述请求消息添加至封装的所述消息队列中和向所述请求消息的请求者提供封装的所述共享资源。
4.根据权利要求3所述的共享资源访问方法,其特征在于:所述接口通过进程间或线程间通信提供。
5.根据权利要求1或3所述的共享资源访问方法,其特征在于:所述请求消息至少包括访问方式和请求者ID。
6.一种共享资源访问系统,其特征在于:所述共享资源访问系统包括:
请求消息生成模块,用于在请求访问共享资源时生成请求消息;
消息队列模块,用于为每一个所述共享资源设置对应的消息队列;
添加模块,分别与所述请求消息生成模块和所述消息队列模块相连,用于将所述请求消息添加至为所述共享资源设置的消息队列中;
访问模块,与所述消息队列模块相连,在所述请求消息从所述消息队列中取出时向所述请求消息的请求者提供所述共享资源。
7.根据权利要求6所述的共享资源访问系统,其特征在于:所述共享资源访问系统还包括:分别与所述共享资源和所述消息队列模块相连的封装模块,用于封装所述共享资源和与所述共享资源对应的消息队列。
8.根据权利要求7所述的共享资源访问系统,其特征在于:所述共享资源访问系统还包括:与所述封装模块相连的接口调用模块,用于通过调用接口将所述请求消息添加至封装的所述消息队列中和向所述请求消息的请求者提供封装的所述共享资源。
9.根据权利要求8所述的共享资源访问系统,其特征在于:所述共享资源访问系统还包括:与所述接口调用模块相连的接口提供模块,用于通过进程间或线程间通信提供所述接口。
10.根据权利要求6或8所述的共享资源访问系统,其特征在于:所述请求消息至少包括访问方式和请求者ID。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727614.4A CN105204928A (zh) | 2015-10-30 | 2015-10-30 | 一种共享资源访问方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727614.4A CN105204928A (zh) | 2015-10-30 | 2015-10-30 | 一种共享资源访问方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105204928A true CN105204928A (zh) | 2015-12-30 |
Family
ID=54952625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510727614.4A Pending CN105204928A (zh) | 2015-10-30 | 2015-10-30 | 一种共享资源访问方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105204928A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142960A (zh) * | 2018-11-02 | 2020-05-12 | 中国电信股份有限公司 | 接口提供方法、装置和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195724B1 (en) * | 1998-11-16 | 2001-02-27 | Infineon Technologies Ag | Methods and apparatus for prioritization of access to external devices |
CN1606301A (zh) * | 2004-07-09 | 2005-04-13 | 清华大学 | 一种共享资源访问的调度控制方法及装置 |
CN1744063A (zh) * | 2004-08-30 | 2006-03-08 | 松下电器产业株式会社 | 资源管理装置 |
CN101196816A (zh) * | 2007-12-29 | 2008-06-11 | 中国科学院计算技术研究所 | 一种操作系统及操作系统管理方法 |
CN103973690A (zh) * | 2014-05-09 | 2014-08-06 | 北京智谷睿拓技术服务有限公司 | 资源访问方法及资源访问装置 |
CN103973691A (zh) * | 2014-05-09 | 2014-08-06 | 北京智谷睿拓技术服务有限公司 | 资源访问方法及资源访问装置 |
-
2015
- 2015-10-30 CN CN201510727614.4A patent/CN105204928A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195724B1 (en) * | 1998-11-16 | 2001-02-27 | Infineon Technologies Ag | Methods and apparatus for prioritization of access to external devices |
CN1606301A (zh) * | 2004-07-09 | 2005-04-13 | 清华大学 | 一种共享资源访问的调度控制方法及装置 |
CN1744063A (zh) * | 2004-08-30 | 2006-03-08 | 松下电器产业株式会社 | 资源管理装置 |
CN101196816A (zh) * | 2007-12-29 | 2008-06-11 | 中国科学院计算技术研究所 | 一种操作系统及操作系统管理方法 |
CN103973690A (zh) * | 2014-05-09 | 2014-08-06 | 北京智谷睿拓技术服务有限公司 | 资源访问方法及资源访问装置 |
CN103973691A (zh) * | 2014-05-09 | 2014-08-06 | 北京智谷睿拓技术服务有限公司 | 资源访问方法及资源访问装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142960A (zh) * | 2018-11-02 | 2020-05-12 | 中国电信股份有限公司 | 接口提供方法、装置和系统 |
CN111142960B (zh) * | 2018-11-02 | 2023-11-14 | 中国电信股份有限公司 | 接口提供方法、装置和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101266553B (zh) | 基于嵌入式系统的多任务管理方法 | |
RU2597556C2 (ru) | Структура компьютерного кластера для выполнения вычислительных задач и способ функционирования указанного кластера | |
WO2017177695A1 (zh) | 一种数控系统中应用的开发与集成方法及系统 | |
CN107423619B (zh) | 一种基于虚拟化技术构建智能终端web运行时的方法 | |
CN103744342A (zh) | 一种基于双核处理器的pac实时控制系统 | |
CN112199173B (zh) | 双核cpu实时操作系统数据处理方法 | |
WO2019047441A1 (zh) | 一种通信优化方法及系统 | |
CN107562685B (zh) | 一种基于延时补偿的多核处理器核心间数据交互的方法 | |
CN107479981B (zh) | 一种基于异步调用实现同步调用的处理方法及装置 | |
CN105068859A (zh) | 一种跨虚拟机的多服务调用方法及系统 | |
Castillo et al. | Optimizing computation-communication overlap in asynchronous task-based programs | |
CN115686758B (zh) | 一种基于帧统计的VirtIO-GPU性能可控方法 | |
Zuepke et al. | AUTOBEST: a united AUTOSAR-OS and ARINC 653 kernel | |
CN107483412B (zh) | 一种HTML5 web worker迁移方法及系统 | |
TWI723535B (zh) | 資料計算方法及引擎 | |
Barnes et al. | Prioritised dynamic communicating and mobile processes | |
CN109656868B (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
JP2014503898A (ja) | 処理装置の同期動作のための方法およびシステム | |
CN105204928A (zh) | 一种共享资源访问方法及系统 | |
CN106896956B (zh) | 一种“道”系统下多点触控的实现方法 | |
CN105787391B (zh) | 基于TrustZone硬件的面向任务的安全操作系统 | |
CN114281529B (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
CN111596962A (zh) | 一种基于高速协议通道的实时微内核系统及其初始化方法 | |
CN112214277B (zh) | 基于虚拟机的操作系统分区方法、装置及介质 | |
Subramonian et al. | Reusable models for timing and liveness analysis of middleware for distributed real-time and embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151230 |
|
RJ01 | Rejection of invention patent application after publication |