ET 协程锁

作用

作用是锁住当前逻辑,保证当前逻辑是原子的。coroutineLockType 与 key 相同的情况下逻辑是原子性的。

WaitCoroutineLock

  • 包装的一个ETTask

CoroutineLock (实体)

  • 这个是协程锁得到的对象,当协程锁完成时,需要调用Dispose方法,或者使用Using。销毁的时候调用的CoroutineLockComponent.RunNextCoroutine,最终会执行 WaitCoroutineLock.SetResult
字段
  • type 协程锁 类型
  • key 锁的key
  • level 逻辑队列层级。就是同时进入这个逻辑的数量,第一个是1, 第二个是2

CoroutineLockQueue (实体)

  • 这个被CoroutineLockQueueType管理一个Key 对应一个CoroutineLockQueue。用来做锁类型分类。
字段
  • type 协程锁类型
  • CurrentCoroutineLock 表示当前的锁
  • queue 协程锁任务队列
方法
  • Wait 获取协程锁,time 是超时时间。分析逻辑 如果CurrentCoroutineLock是空,创建一个CoroutineLock,直接返回。这里表示的是第一个进入这个逻辑可以直接得到返回值,然后去执行逻辑。如果CurrentCoroutineLock不是空,表示当前逻辑正在被执行,创建WaitCoroutineLock去等待逻辑的完成或则超时,才能得到返回。
  • Notify 确认任务完成,在队列中取出一个(不是全部,是一个。while里面执行的是return)有效的WaitCoroutineLock,执行 waitCoroutineLock.SetResult(coroutineLock) 这句话会让Wait 中 await waitCoroutineLock.Wait();继续执行,得到一个返回值。也就是让下一个得到逻辑的执行权。

CoroutineLockQueueType

  • 这个管理CoroutineLockQueue。一个Key生成一个CoroutineLockQueue。一个CoroutineLockQueueType 生成一个CoroutineLockQueueType。这个类的方法处理创建 销毁CoroutineLockQueue 之外,(Wait Notify)最终都是调用 CoroutineLockQueue 里的方法

CoroutineLockComponent

  • 协程锁组件,主要是管理整个协程锁,把方法开放给外部调用(Wait)。

实体关系结构图
ET 协程锁_第1张图片
代码执行
ET 协程锁_第2张图片

你可能感兴趣的:(ET,框架学习,unity,ET)