<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在研究Kotlin原始碼之前,得先搞懂Kotlin原始碼結構分佈。不然找不到該看哪裡的程式碼。看原始碼之前當然先得有一個目標,最好是帶著這個目標去看原始碼才比較有針對性,抓主流程,不然可能會陷入浩瀚的原始碼細節中。
協程原始碼,按道理可以分成2個倉庫,一個是Kotlin倉庫,一個是Kotlin協程倉庫。
Kotlin倉庫中定義了協程的基礎元素,這些基礎元素非常關鍵,它們是構建協程的基礎。而協程倉庫相當於是用Kotlin倉庫中定義的基礎元素來實現協程的邏輯。
Kotlin協程原始碼分為3層:
下面,我們來詳細瞭解一下這些層是怎麼分佈的。
Kotlin庫中,協程的基礎層具體位置是在/kotlin/libraries/stdlib/src/kotlin/coroutines/
裡面。官方把這些基礎元素放標準庫裡面,是為了解耦。
在kotlin.coroutines庫中的/kotlinx.coroutines/kotlinx-coroutines-core/common/
子模組下,是一些公共的邏輯。比如launch、async、withContext、Deferred、Job、NonCancellable、Channel、Flow、AbstractCoroutine,這些東西是對基礎層的元素進行的封裝,使上手協程更容易。
在這些公共邏輯的原始碼裡,是不涉及平臺相關的邏輯的。
因為Kotlin是跨平臺的,所以它的平臺相關的邏輯又分為了js、jvm、native,它們的目錄與common平級,分別是:
js:kotlinx-coroutines-core/js/
jvm:kotlinx-coroutines-core/jvm/
native:kotlinx-coroutines-core/native/
我們重點關注一下jvm的就行,下面是jvm目錄下的程式碼,其他平臺也需要實現其自己的執行緒池、事件迴圈、非同步任務等。
. ├── AbstractTimeSource.kt ├── Builders.kt ├── CoroutineContext.kt ├── CoroutineExceptionHandlerImpl.kt ├── Debug.kt ├── DebugStrings.kt ├── DefaultExecutor.kt ├── Dispatchers.kt ├── EventLoop.kt //事件迴圈 ├── Exceptions.kt ├── Executors.kt ├── Future.kt ├── Interruptible.kt ├── Runnable.kt //java.lang.Runnable ├── SchedulerTask.kt ├── ThreadContextElement.kt //執行緒池 ├── ThreadPoolDispatcher.kt ├── channels │ ├── Actor.kt │ └── TickerChannels.kt ├── debug │ ├── AgentPremain.kt │ └── internal │ ├── AgentInstallationType.kt │ ├── ConcurrentWeakMap.kt │ ├── DebugCoroutineInfo.kt │ ├── DebugCoroutineInfoImpl.kt │ ├── DebugProbes.kt │ ├── DebugProbesImpl.kt │ ├── DebuggerInfo.kt │ └── StackTraceFrame.kt ├── flow │ └── internal │ ├── FlowExceptions.kt │ └── SafeCollector.kt ├── internal │ ├── Concurrent.kt │ ├── ExceptionsConstructor.kt │ ├── FastServiceLoader.kt │ ├── InternalAnnotations.kt │ ├── LocalAtomics.kt │ ├── MainDispatchers.kt │ ├── ProbesSupport.kt │ ├── ResizableAtomicArray.kt │ ├── StackTraceRecovery.kt │ ├── Synchronized.kt │ ├── SystemProps.kt │ ├── ThreadContext.kt │ └── ThreadLocal.kt //java.lang.ThreadLocal └── scheduling ├── CoroutineScheduler.kt ├── Deprecated.kt ├── Dispatcher.kt ├── Tasks.kt └── WorkQueue.kt
以上就是kotlin原始碼結構層次詳解的詳細內容,更多關於kotlin原始碼結構的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45