一种基于tooz的信号量的实现方法及装置与流程

文档序号:32947385发布日期:2023-01-14 11:42阅读:来源:国知局

技术特征:
1.一种基于tooz的信号量的实现方法,其特征在于,在已有tooz的基础上,实现一个信号锁;具有如下步骤:s1、对tooz的接口进行改造,增加一个semaphore类,所述semaphore类至少实现两个节点acquire和release,acquire实现一个加锁的过程,所述release则是将当前持有的锁释放;s2、加锁的方法acquire若加锁成功则返回锁对象l;s3、释放锁的方法release是将已经成功获取到的锁进行释放的操作;s4、针对步骤s3中提到的acquire方法,获取锁的具体方法;s5、为防止加锁的操作过于频繁导致锁服务的压力过大,设置加锁失败的超时时间;s6、使用__exit__和__enter__方法,简化用户的使用;s7、修改agent端的rpc api的代码,并调用使用信号量锁加锁。2.根据权利要求1所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s1中,在通过类初始化实例时传入锁名称和锁的最大并发访问数m,所述m必须是一个正整数。3.根据权利要求2所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s2中,所述锁对象l是复用tooz已有的锁,入参中带有一个可选的超时参数timeout,默认配置为无限,即在没有获取锁的情况下,进行无限期的等待;若配置的值大于零,则在等待了超过timeout的时间后超时,并抛出异常退出。4.根据权利要求3所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s3中,释放锁的方法release是将已经成功获取到的锁进行释放的操作,入参为锁对象l,调用l的release方法将锁释放,等待锁释放完成后,方法退出。5.根据权利要求4所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s4中,首先根据所述semaphore对象的最大并发量m,对{0...m-1}这些整数进行遍历,并尝试对形如名称-{index}的新锁名进行加锁,其中index是{0..m-1}这些整数中的一个,若在遍历的过程中加锁成功,则说明并发的访问量不足m,加锁成功,返回这个锁对象,在加锁的过程中如果timeout不为零,则将每次加锁的超时时间设置为timeout/m/n,其中n是每个锁名期望的尝试次数。6.根据权利要求5所述的一种基于tooz的信号量的实现方法,其特征在于,n是每个锁名期望的尝试次数,将n置为2,这样将0到m-1这些整数锁代表的锁遍历2遍;如果timeout为0,则将加锁的超时时间置为1/n即可。7.根据权利要求6所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s5中,将加锁失败的超时时间置为max(0.5,1/n,timeout/m/n),timeout的值为0-0.5s之间。8.根据权利要求7所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s6中,当用户使用sempahore实例化的对象时,可以使用with关键字,同时将获取到的锁l保存在线程本地的变量中threading.local,在__exit__的时候获取到暂存的锁l,并将其释放。9.根据权利要求7所述的一种基于tooz的信号量的实现方法,其特征在于,在步骤s7中,修改agent端的rpc api的代码,定位到调用时间长、查询信息量大的方法,并在调用之前使用信号量锁加锁,其中,信号量锁的最大并发量通过配置文件配置。10.一种基于tooz的信号量的实现装置,其特征在于,包括:至少一个存储器和至少一
个处理器;所述至少一个存储器,用于存储机器可读程序;所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至9中任一所述的方法。

技术总结
本发明涉及云计算领域和计算机网络领域,具体提供了一种基于tooz的信号量的实现方法,具有如下步骤:S1、对tooz的接口进行改造,增加一个Semaphore类;S2、加锁的方法acquire若加锁成功则返回锁对象L;S3、释放锁的方法release是将已经成功获取到的锁进行释放的操作;S4、针对步骤s3中提到的acquire方法,获取锁的具体方法;S5、为防止加锁的操作过于频繁导致锁服务的压力过大,设置加锁失败的超时时间;S6、使用__exit__和__enter__方法,简化用户的使用;S7、修改Agent端的RPC API的代码,并调用使用信号量锁加锁。与现有技术相比,本发明通过tooz实现了一个信号量锁,支持配置最大的并发量M,解决了tooz仅支持互斥锁的缺陷。解决了tooz仅支持互斥锁的缺陷。解决了tooz仅支持互斥锁的缺陷。


技术研发人员:申嘉童 宋伟 谢涛涛
受保护的技术使用者:浪潮云信息技术股份公司
技术研发日:2022.10.14
技术公布日:2023/1/13
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1