HLClock 0.2.0

HLClock 0.2.0

测试测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2016年6月
SPM支持 SPM

Stephen Spalding维护。



HLClock 0.2.0

  • Stephen Spalding

HLClock

时间是幻觉。 —— 阿尔伯特·爱因斯坦

为 iOS 优化的混合逻辑时钟。

概述

精确时钟同步很困难。对于移动设备而言,这个问题更为严重。当时钟不同步时,确定事件的顺序可能变得困难。

此库包含用于处理时钟同步相关问题的工具。

混合逻辑时钟(HLC)

混合逻辑时钟允许在多个设备上创建的不同时钟的事件之间进行因果排序。

参见: http://muratbuffalo.blogspot.com/2014/07/hybrid-logical-clocks.html

网络时间

当时钟略有不同步时,混合逻辑时钟很有用。用户控制的移动设备可能有错误的时区设置等原因导致的时钟与标准时间相差数小时,这超出了 HLC 设计的补偿范围。

一个简单的选项是根据从 http 响应中接收到的 Date 头维护一个偏差。比如在首次登录时执行这项操作,以便在应用启动时同步时钟。这应该足以让 iPad 的时钟与“真实时间”相差几秒钟。

另一个选项是使用 NTP。NHNetworkTime 是一个可以使用的 NTP 实现:https://github.com/huynguyencong/NHNetworkTime

使用方法

import HLClock

// Create a new timestamp
let newTimestamp = HLClock.global.now()

// Update clock when receiving a new message
HLClock.global.update(message.timestamp)

示例

要运行示例项目,请克隆仓库,然后从 Example 目录运行 pod install

安装

HLClock 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod "HLClock"

点检清单

  • [x] 实现HLC算法
  • [x] 使用原子交换使其线程安全
  • [x] 打包为库,可以通过 CocoaPods 安装
  • [ ] 时钟偏移使用移动中位数
  • [ ] 在示例应用程序中添加 hlclock 使用
  • [ ] 使用 HLC 时间戳生成 UUIDv1
  • [ ] 添加快速检查测试

许可

HLClock 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。