ET框架学习之CoroutineLockComponent协程锁剖析

一、背景介绍

最近对ET的深度学习,记录学习过程遇到一些比较啃的硬骨头,也为后面回顾记录一些笔记。协程锁是一种与传统锁不一样的实现,功能一样都是防止某段代码并发执行。ET的协程锁是一种更轻量级的自我实现lock机制,深度学习CoroutineLockComponent能够更好理解lock技术和理解并发原理。

二、CoroutineLockComponent的数据结构

在这里插入图片描述

  • 从CoroutineLockComponent Instance可以看出该类是一个单例,为整个框架服务。
  • list是不同的类型的协程锁列表,项目都有很多控制并发的代码块,为每个块定义不同的类型,从而有很多的协程锁。
  • CoroutineLockQueueType类中存了一个字典数据 Dictionary<long, CoroutineLockQueue> dictionary,key为long类型的协程锁type,CoroutineLockQueue为了具体某个类型的锁当前并发执行的个数列表。
  • nextFrameRun表示下帧需要执行的锁数据,后面重点介绍。
  • timers表示加入到锁管理器的所有的协程锁数据,key是时间即超时时间,value(CoroutineLockTimer)即实际的锁数据。该字典是一个排序好的SortedDictionary,提高timers的遍历访问效率。
  • timeOutIds所有超时应该触发的协程锁。
  • idGenerator内部管理的数据ID。
  • minTime当

猜你喜欢

转载自blog.csdn.net/liyuping8888/article/details/127828856