CN101163094B - 实现任务间共享数据的方法 - Google Patents

实现任务间共享数据的方法 Download PDF

Info

Publication number
CN101163094B
CN101163094B CN2006101496550A CN200610149655A CN101163094B CN 101163094 B CN101163094 B CN 101163094B CN 2006101496550 A CN2006101496550 A CN 2006101496550A CN 200610149655 A CN200610149655 A CN 200610149655A CN 101163094 B CN101163094 B CN 101163094B
Authority
CN
China
Prior art keywords
task
message
user
sharing data
clear
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.)
Expired - Fee Related
Application number
CN2006101496550A
Other languages
English (en)
Other versions
CN101163094A (zh
Inventor
赵欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Good Hood Technology Co ltd
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2006101496550A priority Critical patent/CN101163094B/zh
Publication of CN101163094A publication Critical patent/CN101163094A/zh
Application granted granted Critical
Publication of CN101163094B publication Critical patent/CN101163094B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种实现任务间共享数据的方法,解决了多任务访问共享数据区容易产生死锁,而且不易定位故障的问题。包括:没有访问共享数据区权限的任务向具备访问权限的任务发ACTION消息;具备访问权限的任务收到该消息后,按照消息的内容,运行相应程序,操作共享数据区;运行结束,具备访问权限的任务向ACTION消息的发送者发送应答消息,该应答消息包含运行结果;本发明的共享数据区不用保护,任务间可以安全的访问共享数据区数据。不用考虑锁等保护机制,编码得以简化;没有锁,不会出现死锁,完全避免了死锁问题。

Description

实现任务间共享数据的方法
技术领域
本发明涉及计算机系统领域,具体涉及一种实现任务间共享数据的方法。尤其适用于定时器、后台等任务对共享数据的访问处理。
背景技术
计算机系统,无论是大的图形化操作系统还是小小的芯片上运行的程序,经常采用多任务的处理方式。每个任务具备不同的功能,任务间通过消息交互一些信息。这些任务有时需要访问同一个数据区,这些被多个任务访问的数据就是共享数据,也被称作临界区。由于多任务访问,临界区必须保证在某个任务的访问过程中不被修改,即直到当前任务使用完毕,才允许其他任务访问临界区。这样才能保证临界区数据的正确。例如银行系统,用户的账户信息就是临界区,而存取款的动作就是一个个任务,必须完成一笔业务再处理另外一笔业务。
为了保证临界区是互斥访问的,即一个时间只能有一个任务对其访问。操作系统提供了很多手段,例如锁机制和事务。可以对临界区进行锁保护,任何一个任务访问临界区,必须先获得锁,得到锁后,才能操作临界区,访问完毕后释放锁。如果得不到锁,任务就处于等待状态。事务是数据库系统的概念,与锁类似。
这个方法在嵌入式操作系统上存在一些缺点:
1.一些嵌入式操作系统用中断实现锁,使得加锁和解锁的开销比较大。有的时候对临界区的数据操作简单,指令不多,操作很快就能完成,但是加锁和解锁的操作占用较多时间,代码无法提高效率。
2.编码复杂,一旦发生死锁,不易定位故障。由于任务中可以多次访问临界区,如果某次访问没有释放锁,后面的访问无法进行,但是锁的占用者却是自己,只能走读代码查找问题。
发明内容
针对现有技术存在的缺陷和不足,本发明提供一种无须对共享数据进行保护,而且多任务能够访问共享数据区的实现任务间共享数据的方法。
为达到上述目的,本发明采用以下技术方案:一种实现任务间共享数据的方法,包括如下步骤:
步骤A,没有访问共享数据区权限的任务向具备访问权限的任务发ACTION消息;
步骤B,具备访问权限的任务收到该消息后,按照消息的内容,运行相应程序,操作共享数据区;
步骤C,运行结束,具备访问权限的任务向ACTION消息的发送者发送应答消息,该应答消息包含运行结果;
优选的:在所述实现任务间共享数据的方法中,还包括如下步骤:
步骤D,ACTION的发送者收到所述应答消息,判断运行结果;
步骤E,如果所述运行结果是未完,那么ACTION的发送者再向具备访问权限的任务发送ACTION消息;
步骤F,如果应答消息里的结果是结束,那么ACTION的发送者不再向具备访问权限的任务发ACTION消息。
优选的:在所述实现任务间共享数据的方法中,PROTOCOL任务为具备访问共享数据区权限的任务;CLEAR_SUB任务为没有访问共享数据区权限的任务;CLEAR_SUB的优先级低于PROTOCOL的优先级;活动用户表为共享数据区。
优选的:在所述实现任务间共享数据的方法中,所述PROTOCOL任务在用户上、下线时,向活动用户表增加、删除该用户所对应的纪录;当网管下踢用户命令时,CLEAR_SUB任务查询活动用户表,删除符合条件的用户的纪录,CLEAR_SUB任务的优先级低于PROTOCOL任务的优先级。
优选的:在所述实现任务间共享数据的方法中,所述步骤A具体为:
步骤A1,CLEAR_SUB任务收到clear sub domain 100命令,构造踢用户消息;
步骤A2,CLEAR_SUB任务把构造好踢用户消息发送给PROTOCOL任务。
优选的:在所述实现任务间共享数据的方法中,所述踢用户消息的内容包含:用户标志1,表示从第一个用户开始;DomainID置为100,删除的条件,活动用户DomainID是100;当前时刻,表示删除此时刻前上线的用户;操作用户个数,表示一次处理几个用户;本次命令编号,为了区分多个网管命令。
优选的:在所述实现任务间共享数据的方法中,所述步骤B具体为:
步骤B1,PROTOCOL收到踢用户消息,按照消息中的用户标志1定位到起始用户;
步骤B2,读取当前用户,先判断当前用户的DomainID是否等于100,然后判断用户上线时间是否在当前时刻之前;
步骤B3,如果两个条件都满足,踢掉当前用户,处理的用户数加1,执行步骤B2;
步骤B4,如果当前用户的DomainID大于100,步骤结束。
优选的:在所述实现任务间共享数据的方法中,所述步骤C具体为:
步骤C1,退出步骤B的运行;
步骤C2,如果当前用户的DomainID大于100,PROTOCOL给CLEAR_SUB发应答消息,该消息的内容是END,表示处理结束;
步骤C3,如果当前用户的DomainID等于100,记录当前用户的DomainID作为断点,PROTOCOL给CLEAR_SUB发应答消息,消息内容是CONTINUE,表示没有结束。
优选的:在所述实现任务间共享数据的方法中,所述步骤D、E具体为:
步骤D,CLEAR_SUB任务收到具备访问权限的PROTOCOL任务发送的应答消息;
步骤E,如果应答消息的内容是CONTINUE,CLEAR_SUB任务再向具备访问权限的PROTOCOL任务发一个ACTION消息;如果应答消息的内容是END,CLEAR_SUB任务不再向PROTOCOL任务发消息。
本发明的共享数据区不用保护,任务间可以安全的访问共享数据区数据。不用考虑锁等保护机制,编码得以简化;没有锁,不会出现死锁,完全避免了死锁问题。多个任务通过发消息给有权限的任务来操作共享数据区,那么高优先级的任务先发出消息,低优先级的任务后发出消息,不会出现因为锁导致的任务优先级逆转问题。共享数据实际上是串行访问的,类似底层CPU的处理,非常安全。
此方法尤其适合定时器、后台任务等操作,这些任务一般采用低优先级任务,周期性规律性的访问共享数据区,对执行动作的实时性要求不高,不要求立即返回操作结果。
附图说明
图1以两个任务为例的消息交互示意图。
具体实施方式
实现任务间共享数据的方法要做到免保护,关键是只让一个任务访问临界区,其他任务不允许访问临界区。例如有n个任务,它们共享数据区D。那么规定只有一个任务能够访问数据区D,其他任务不能直接访问数据区D,只能发消息给具备访问权限的任务,消息里说明访问的动作,可以是一个函数名或其他能够表明动作的编号。具备访问权限的任务收到消息后,执行动作,操作共享数据。运行结束后,给动作的发起方发一个应答消息。发起动作的任务根据应答消息,决定后续的操作。
消息交互过程如图1所示,下面是该方法实现两个任务间共享数据的例子。
实施步骤:
在接入服务器设备上有许多任务,其中PROTOCOL任务处理协议信息,完成用户的上下线动作,任务优先级为100;CLEAR_SUB任务处理网管的所有踢用户命令,任务优先级是140。
活动用户表是两个任务都要访问的数据。当用户上线、下线时,PROTOCOL向活动用户表增加、删除表项。当网管下踢用户命令时,CLEAR_SUB任务查询活动用户表,删除符合条件的用户。由于网管踢用户的命令往往会影响一大批用户,可能会删除上万个用户,如果用高优先级的任务完成这个工作,会影响设备对其他事件的响应速度,网管命令也会很久无响应。所以用低优先级的CLEAR_SUB任务完成这个工作,分批的删除符合条件的活动用户。CLEAR_SUB任务用上面描述的方法访问活动用户表。步骤如下:
第一步:某个任务(此任务没有访问权限)向具备访问权限的任务发ACTION消息。
CLEAR_SUB任务没有访问活动用户的权限,PROTOCOL具备访问活动用户的权限。CLEAR_SUB不能直接操作活动用户数据,当它收到一条网管指令,要求删除domain 100里的所有在线用户。那么CLEAR_SUB任务做下面动作:
1.CLEAR_SUB任务收到clear sub domain 100命令,构造踢用户的消息,内容包含:
用户标志1(表示从第一个用户开始),DomainID置为100(删除的条件,活动用户DomainID是100),当前时刻(表示删除此时刻前上线的用户),操作用户个数(表示一次处理几个用户),本次命令编号(为了区分多个网管命令)。
2.CLEAR_SUB任务把构造好的消息发送给PROTOCOL任务
第二步:具备访问权限的任务收到ACTION,按照消息的内容,运行一段程序,操作共享数据区D。
PROTOCOL是具备访问权限的任务。
1.PROTOCOL收到踢用户消息。
2.按照消息中的用户标志定位到起始用户。
3.读取用户,判断用户的DomainID是否与消息中条件一致,用户上线时间是否在消息时刻之前。
4.如果条件不满足执行步骤5,否则到7。
5.踢掉这个用户。
6.处理的用户数增一。
7.处理下一个用户记录。
8.如果下一个记录为空,或处理的用户数达到消息中操作用户个数,退出循环,否则到3循环处理。
第三步:运行结束,具备访问权限的任务向ACTION消息的发送者发ACK消息,包含运行的结果。
退出第二步的循环,如果达到活动用户表尾部,说明已经查完所有记录,给CLEAR_SUB发ACK消息,消息内容是END,表示处理结束。反之,记录断点,消息内容是CONTINUE,表示没有结束。断点表示下次处理开始的地方,断点的生成方式为:拷贝收到的消息,修改用户标志为下一个要处理的记录标志。
第四步:ACTION的发送者收到ACK消息,判断运行的结果。
CLEAR_SUB是ACTION的发送者,那么它收到PROTOCOL的应答ACK消息。
第五步:如果结果是未完,那么ACTION的发送者再向具备访问权限的任务发一个ACTION消息,重复上面过程。
CLEAR_SUB查看消息内容,如果是CONTINUE消息,那么提取消息中的断点,再向PROTOCOL任务发ACTION消息,重复上面过程。
第六步:如果ACK消息里的结果是结束,那么ACTION的发送者不再向具备访问权限的任务发消息,继续其他工作。
CLEAR_SUB查看消息内容,如果是END消息,表示处理结束,那么CLEAR_SUB任务结束这个网管命令的处理,回到等待命令的状态。
采用这样的方式,能够达到多任务共享访问数据的目的,并不局限于两个任务间共享,可以是任意多个任务共享数据,还把访问大批用户的命令分割成一小块一小块的执行,不会由于长时间占据共享数据,而造成其他任务无法处理。并且由于任务间存在优先级的差异,会随着任务的忙闲调节处理大批量数据的速度,不象定时器是个固定的处理频率。定时器的任务执行时间是固定的,忙的时候它让系统更忙,闲的时候也不能多做一些。而我们这个方法却能够自动调节,忙的时候低优先级任务调度不到无法执行,不会造成系统更忙;而闲的时候能够加快运行,快速把命令做完。

Claims (9)

1.一种实现任务间共享数据的方法,包括如下步骤:
步骤A,没有访问共享数据区权限的任务向具备访问权限的任务发ACTION消息;
步骤B,具备访问权限的任务收到该消息后,按照消息的内容,运行相应程序,操作共享数据区;
步骤C,运行结束,具备访问权限的任务向ACTION消息的发送者发送应答消息,该应答消息包含运行结果。
2.根据权利要求1所述的实现任务间共享数据的方法,其特征在于,还包括如下步骤:
步骤D,ACTION消息的发送者收到所述应答消息,判断运行结果;
步骤E,如果所述运行结果是未完,那么ACTION消息的发送者再向具备访问权限的任务发送ACTION消息;
步骤F,如果应答消息里的结果是结束,那么ACTION消息的发送者不再向具备访问权限的任务发ACTION消息。
3.根据权利要求1所述的实现任务间共享数据的方法,其特征在于,PROTOCOL任务为具备访问共享数据区权限的任务;CLEAR_SUB任务为没有访问共享数据区权限的任务;CLEAR_SUB的优先级低于PROTOCOL的优先级;活动用户表为共享数据区。
4.根据权利要求3所述的实现任务间共享数据的方法,其特征在于,所述PROTOCOL任务在用户上、下线时,向活动用户表增加、删除该用户所对应的纪录;当网管下踢用户命令时,CLEAR_SUB任务查询活动用户表,删除符合条件的用户的纪录,CLEAR_SUB任务的优先级低于PROTOCOL任务的优先级。
5.根据权利要求4所述的实现任务间共享数据的方法,其特征在于,所述步骤A具体为:
步骤A1,CLEAR_SUB任务收到clear sub domain 100命令,构造踢用户消息;
步骤A2,CLEAR_SUB任务把构造好踢用户消息发送给PROTOCOL任务。
6.根据权利要求5所述的实现任务间共享数据的方法,其特征在于,所述踢用户消息的内容包含:用户标志1,表示从第一个用户开始;DomainID,置为100,表示删除的条件为删除的活动用户DomainID是100;当前时刻,表示删除此时刻前上线的用户的时刻;操作用户个数,表示一次处理几个用户;本次命令编号,为了区分多个网管命令。
7.根据权利要求4或6所述的实现任务间共享数据的方法,其特征在于,所述步骤B具体为:
步骤B1,PROTOCOL收到踢用户消息,按照消息中的用户标志1定位到起始用户;
步骤B2,读取当前用户,先判断当前用户的DomainID是否等于100,然后判断用户上线时间是否在当前时刻之前;
步骤B3,如果两个条件都满足,踢掉当前用户,处理的用户数加1,执行步骤B2;
步骤B4,如果当前用户的DomainID大于100,步骤结束。
8.根据权利要求7所述的实现任务间共享数据的方法,其特征在于,所述步骤C具体为:
步骤C1,退出步骤B的运行;
步骤C2,如果当前用户的DomainID大于100,PROTOCOL给CLEAR_SUB发应答消息,该消息的内容是END,表示处理结束;
步骤C3,如果当前用户的DomainID等于100,记录当前用户的DomainID作为断点,PROTOCOL给CLEAR_SUB发应答消息,消息内容是CONTINUE,表示没有结束。
9.根据权利要求2所述的实现任务间共享数据的方法,其特征在于,所述步骤D、E具体为:
步骤D,CLEAR SUB任务收到具备访问权限的PROTOCOL任务接发送的应答消息;
步骤E,如果应答消息的内容是CONTINUE,CLEAR_SUB任务再向具备访问权限的PROTOCOL任务发一个ACTION消息;如果应答消息的内容是END,CLEAR_SUB任务不再向PROTOCOL任务发消息。
CN2006101496550A 2006-10-13 2006-10-13 实现任务间共享数据的方法 Expired - Fee Related CN101163094B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2006101496550A CN101163094B (zh) 2006-10-13 2006-10-13 实现任务间共享数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2006101496550A CN101163094B (zh) 2006-10-13 2006-10-13 实现任务间共享数据的方法

Publications (2)

Publication Number Publication Date
CN101163094A CN101163094A (zh) 2008-04-16
CN101163094B true CN101163094B (zh) 2010-12-01

Family

ID=39297926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006101496550A Expired - Fee Related CN101163094B (zh) 2006-10-13 2006-10-13 实现任务间共享数据的方法

Country Status (1)

Country Link
CN (1) CN101163094B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991304B (zh) * 2015-01-28 2021-10-15 深圳市腾讯计算机系统有限公司 消息发送方法及装置
US11556395B2 (en) * 2020-01-24 2023-01-17 Microsoft Technology Licensing, Llc Data race detection with per-thread memory protection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1299203A (zh) * 2001-01-12 2001-06-13 北京北大天正科技发展有限公司 一种计算机网络中的共享数据传递方法
CN1645799A (zh) * 2005-01-31 2005-07-27 北京北大方正电子有限公司 基于远程代理的分布式统一数据存取系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1299203A (zh) * 2001-01-12 2001-06-13 北京北大天正科技发展有限公司 一种计算机网络中的共享数据传递方法
CN1645799A (zh) * 2005-01-31 2005-07-27 北京北大方正电子有限公司 基于远程代理的分布式统一数据存取系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
陈文宇.实时动态模拟环境中多任务间的数据共享.中国期刊全文数据库Vol.30 No.6.2001,Vol.30(No.6),正文第600页至第603页. *
陈文宇.实时动态模拟环境中多任务间的数据共享.中国期刊全文数据库Vol.30No.6.2001 Vol.30(No.6)

Also Published As

Publication number Publication date
CN101163094A (zh) 2008-04-16

Similar Documents

Publication Publication Date Title
US7996462B2 (en) Collaborative agent for a work environment
CN100481009C (zh) 根据客户软件的特许级向虚拟机转移的系统、装置和方法
US9158746B2 (en) Managing concurrent editing in a collaborative editing environment using cursor proximity and a delay
DE69123334T2 (de) Schlangenverwalterverfahren für ein elektronisches Mitteilungssystem
US6965893B1 (en) Techniques for granting shared locks more efficiently
US5511196A (en) Method and system in a data processing system for the enhancement of relationships between reference objects in an object oriented environment and a data object outside an object oriented environment
KR20130143089A (ko) 컴퓨팅 객체의 콘텍스트 히스토리
Sun Optional and responsive fine-grain locking in internet-based collaborative systems
JP2003501726A (ja) サーバ・エージェント・システム
CN101288048A (zh) 内容聚合平台
CN103049268A (zh) 一种基于Naplet的应用开发管理系统
CN103618762A (zh) 一种基于aop的企业服务总线状态预处理系统及方法
CN101163094B (zh) 实现任务间共享数据的方法
CN107409086A (zh) 通过多个邮箱在通信应用中进行海量数据管理
Wang et al. An Improved Integrated Scheduling Algorithm with Process Sequence Time‐Selective Strategy
Fan et al. Shared-locking for semantic conflict prevention in real-time collaborative programming
Cisco Thresholding Regimes
CA2220612C (en) Method and apparatus for inter-node deadlock avoidance on a parallel processing system
Singh et al. Networked virtual worlds
Nicol et al. The IDES framework: a case study in development of a parallel discrete-event simulation system
JPH10333970A (ja) 複数の情報共有装置に分散されている情報の共有方法および情報共有装置
KR102369569B1 (ko) 업무컨테이너를 기반으로 하는 협업플랫폼에서 업무에 대한 웹문서를 생성하는 방법 및 컴퓨터-판독가능 매체
Singhal et al. An optimality proof for asynchronous recovery algorithms in distributed systems
CN1070624C (zh) 多人竞赛回合制网络游戏中创建者自动转移的方法
Lynch et al. Using mappings to prove timing properties

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HANGZHOU GEHUDA TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20150413

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518057 SHENZHEN, GUANGDONG PROVINCE TO: 311121 HANGZHOU, ZHEJIANG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20150413

Address after: Yuhang District, Hangzhou City, Zhejiang Province, 311121 West No. 1500 Building 2 room 628

Patentee after: HANGZHOU GOOD-HOOD TECHNOLOGY Co.,Ltd.

Address before: 518057, Guangdong Shenzhen hi tech Industrial Park Nanshan District science and technology south road ZTE building 6 floor of the Ministry of law

Patentee before: ZTE Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101201

Termination date: 20211013