目前正在测试中:完成后将开放 GitHub 代码。

R · 已释放 (Released)

结构refresh

释放请求(R)的成功响应。

token 是把请求中携带的值原样回传的关联标识 —— 客户端用它来确定这是哪一个请求的 响应(响应匹配规则)。

字节表示法: op 是 ASCII 字符,token 是二进制(u64,大端序),key 是 UTF-8 文本(变长,在结构中以 N 表示)。末尾的 \n0A。固定头部是二进制值,可能 包含 0x0A,因此必须在扫描换行符之前先按字节数消费

流程

持有者 X
服务器
等待者 Y
R · 释放 (key · token)
R · 已释放
若存在等待者
A · 已获取 (新 token)
请求响应

R(已释放)只发给释放者。如果存在等待者,与此同时,队列最前面的那个连接 会收到已获取 A —— 直接移交, 无需重新竞争。这两个响应是在不同连接上发出的,因此两者之间不要求任何顺序关系。