你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> iOS多線程

iOS多線程

編輯:IOS技巧綜合
[摘要]本文是對iOS多線程-基礎概念的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

知識點

1.進程與線程
2.多線程及其優缺點
3.多線程在iOS開發中的應用
4.異步與同步

進程與線程

進程和線程都是操作系統中的重要概念,如果想要詳細了解可參考操作系統(計算機)進程和線程管理,此處只是簡單的介紹。

進程

iOS中一個應用運行時會對應有一個進程,有自己的內存和磁盤空間。

線程

進程中執行任務的是線程,線程的執行順序是串行的,一個進程中可以有多個線程

多線程及其優缺點

並發&並行

並發,分的是單個CPU的時間片
並行,分的是多個CPU運行資源

結論,並行是真正的同時執行,而並發是偽同時執行。

多線程概念

多線程是指在進程中有多個線程並發執行。

多線程在iOS開發中的應用

1.iOS開每個進程有一個主線程(UI線程),該線程主要用於處理UI事件
2.開發者可以自行添加線程,耗時操作盡量放在主線程以外的線程來完成,防止阻塞主線程。

多線程的優點

開辟的線程是並發執行的,即多個線程是在同一個CPU中完成。
多線程能提高程序的執行效率以及資源利用率(CPU、內存利用率)。
但並發是需要CPU調度的,調度過程中也會有所消耗,因此我們不能開辟過多的線程。這樣反而會降低運行效率。

疑惑

目前理解多線程都是在同一個CPU中執行的,但系統是如何利用多個CPU實現並行以提高效率的還不了解。希望看到此文又對此有所了解的讀者能指點一二。

異步&同步

異步:不阻塞當前線程
同步:阻塞當前線程

這裡有個值得思考的問題:異步一定是多線程嗎?
以下是我結合找的資料整理的答案
異步是目的,多線程是手段,因此,說異步是多線程的說法是不對的。只能說,多線程可以實現異步,而可以實現異步的還有定時器。

另外還找到這麼一段話

所有的程序最終都會由計算機硬件來執行,所以為了更好的理解異步操作的本質,我們有必要了解一下它的硬件基礎。 熟悉電腦硬件的朋友肯定對DMA這個詞不陌生,硬盤、光驅的技術規格中都有明確DMA的模式指標,其實網卡、聲卡、顯卡也是有DMA功能的。DMA就是直 接內存訪問的意思,也就是說,擁有DMA功能的硬件在和內存進行數據交換的時候可以不消耗CPU資源。只要CPU在發起數據傳輸時發送一個指令,硬件就開 始自己和內存交換數據,在傳輸完成之後硬件會觸發一個中斷來通知操作完成。這些無須消耗CPU時間的I/O操作正是異步操作的硬件基礎。所以即使在DOS 這樣的單進程(而且無線程概念)系統中也同樣可以發起異步的DMA操作。

來源:淺談多線程和異步

因此,DMA操作也可以實現異步。

當前這裡我還有個問題是沒有解決的,iOS中實現異步的手段是什麼?

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved