R · 已释放 (Released)
结构refresh
对释放请求(R)的成功响应。
token 是把请求中携带的值原样回传的关联标识 —— 客户端用它来确定这是哪一个请求的 响应(响应匹配规则)。
字节表示法:
op是 ASCII 字符,token是二进制(u64,大端序),key是 UTF-8 文本(变长,在结构中以N表示)。末尾的\n为0A。固定头部是二进制值,可能 包含0x0A,因此必须在扫描换行符之前先按字节数消费。
流程
持有者 X
服务器
等待者 Y
R · 释放 (key · token)
R · 已释放
若存在等待者
A · 已获取 (新 token)
请求响应
R(已释放)只发给释放者。如果存在等待者,与此同时,队列最前面的那个连接 会收到已获取 A —— 直接移交, 无需重新竞争。这两个响应是在不同连接上发出的,因此两者之间不要求任何顺序关系。