iOS之深入解析dispatch source的原理与功能
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析dispatch source的原理与功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、dispatch source 和 runLoop source
- dispatch source 和 runLoop source 都是用來監聽事件的,可以創建不同類型的 dispatch source 和 runLoop source 。
- dispatch source 監聽到事件產生時,會將 event handler 添加到目標 queue。
- runLoop source 需要先按照某種模式加入到指定線程的 runLoop 中。
- dispatch source 和 runLoop source 都是異步處理模式,只要創建、設置好,就可以在相應的 handler 中監聽到相應事件的產生。
二、dispatch source 與內核
- GCD 中除了主要的 Dispatch Queue 外, 還有不太引人注目的Dispatch Source(信號源)。它是BSD系內核慣有功能 kqueue 的包裝。
- BSD (Berkeley Software Distribution, 伯克利軟件套件):是Unix 的衍生系統。例如: OpenBSD、 FreeBSD、macOS。
- kqueue(kernel queue)內核隊列:最初是2000年Jonathan Lemon在 FreeBSD 系統上開發的一個高性能的事件通知接口,是用來實現 IO 多路復用。注冊一批描述符注冊到 kqueue 以后(被封裝成kevent) ,當其中的描述符狀態發生變化時,kqueue 將一次性通知應用程序哪些描述符可讀、可寫或出錯了。kqueue 支持多種類型的文件描述符, 包括socket 、文件狀態、進程通訊等。kqueue 可以說是應用程序處理 XNU 內核中發生的各種事件的方法中最優秀的一種。其CPU 負荷非常
總結
以上是生活随笔為你收集整理的iOS之深入解析dispatch source的原理与功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Metal之探究理解视频渲染RGB与YU
- 下一篇: iOS之深入解析alloc、init与n