为什么需要刷新信号量呢,因为信号量有过期时间;

为什么信号量需要过期时间呢,因为需要利用超时特性,解决分布式锁存在的一些固有缺陷。

而对于类似流式API来说,一般10秒的过期时间是远远不够的。因此我们需要对信号量进行刷新,以防止其过期。

因为公平信号量区分开了“超时有序集合”和“信号量拥有者有序集合”,所以程序只需要对超时有序集合进行更新就可以立即刷新信号量的超时时间了。

程序结构如下:

def refresh_fair_semaphore(conn,semname,identifier);

  if conn.zadd(semname,identifier,time.time())://更新客户端持有的信号量

    release_fair_semaphore(conn,semname,identifier) //刷新失败,释放信号量

    return false;

  return true; //客户端仍持有信号量

最新文章

  1. Xcode使用HTTP配置
  2. (int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
  3. DB2环境设置
  4. C++指针比较的问题
  5. [BTS] BizTalk EDI AS2 Error 1
  6. sqlserver -- 学习笔记(三)解决php连接sqlserver2005视图时显示“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项”的问题
  7. 阿里云数据库RDS环境搭建
  8. 关于Java单例
  9. vi查找替换
  10. Rect
  11. 【转】如何查看linux版本 如何查看LINUX是多少位
  12. cocos2d-x-3.1 经常使用宏 (coco2d-x 学习笔记五)
  13. Linux Shell脚本入门--awk命令详解
  14. [COM/ATL]组件、对象、MFC、ATL的区别
  15. [bzoj4405][wc2016]挑战NPC
  16. symfony简单的博客练习,熟悉具体开发流程
  17. VLC 用到的那些 YUV 格式
  18. Windows Server 2016-Active Directory域服务端口汇总
  19. WSL Windows subsytem linux 的简单学习与使用
  20. JS自学笔记03

热门文章

  1. Ion内存的带cahce与不带cache问题分享
  2. Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days)
  3. WPF 浏览PDF 文件
  4. 新手学习FFmpeg - 调用API完成录屏并进行H.264编码
  5. CentOS7下使用SonatypeNexus3搭建Docker私有仓库
  6. P1613 跑路 倍增思想 + 邻接矩阵
  7. Harbinger vs Sciencepal
  8. 牛客网暑期ACM多校训练营(第三场)---A.PACM Team
  9. Disruptor中shutdown方法失效,及产生的不确定性源码分析
  10. Python中字典,集合和元组函数总结