这个模块实现了异步锁。IO 在涉及到 “流” 的时候,不可避免的引入 “序” 的问题。为了保证多个读写 “序” 的正确,需要异步锁进行同步或者说是排队。通常,您不会直接使用异步锁。异步锁作为 Netkit 的底层机制 控制 IO “序” 的一致性,并对外提供 “锁” 无关的开放 API 。
与同步风格的锁一样,您应该总是以 “窗口” 的方式操作锁,并尽可能将锁与某个特定对象绑定,以避免 “死锁”、 “活锁” 等问题。
Procs
proc initAsyncLock(): AsyncLock {...}{.raises: [], tags: [].}
- 初始化一个 AsyncLock 。 Source Edit
proc acquire(L: AsyncLock): Future[void] {...}{.raises: [], tags: [].}
- 尝试获取一把锁。 Source Edit
proc release(L: AsyncLock) {...}{.raises: [], tags: [].}
- 释放已经获取的锁。 Source Edit
proc isLocked(L: AsyncLock): bool {...}{.raises: [], tags: [].}
- 判断 L 是否处于锁住状态。 Source Edit