日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

iOS开发 - 线程与进程的认识与理解

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发 - 线程与进程的认识与理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

進程:

  • 進程是指在系統中正在運行的一個應用程序,比如同時打開微信和Xcode,系統會分別啟動2個進程;
  • 每個進程之間是獨立的,每個進程均運行在其專用且受保護的內存空間內;

線程:

  • 一個進程要想執行任務,必須得有線程(每一個進程至少要有一條線程),是進程中執行運算的最小單位,是進程中的一個實體,是被系統獨立調度和分派的基本單位;
  • 一個進程(程序)的所有任務都在線程中執行;
  • 一個程序有且只有一個主線程,程序啟動時創建(調用main來啟動),主線程的生命周期是和應用程序綁定,程序退出時,主線程也停止;
  • 同一時間內,一個線程只能執行一個任務,若要在1個進程中執行多個任務,那么只能一個個的按順序執行這些任務(線程的串行);
  • 線程自己不擁有系統資源,只擁有在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源;

線程的幾種狀態:

  • 新建狀態:新創建一個線程對象;
  • 就緒狀態:線程對象創建之后,其他線程調用了該對象的start方法,該狀態的線程位于可運行線程池中,變得可運行,等待獲取CPU的使用權;
  • 運行狀態:就緒狀態的線程獲取了CPU,執行程序代碼;
  • 阻塞狀態:因某種原因放棄CPU使用權,暫停運行,知道線程進入就緒狀態,才有機會轉到運行狀態;
  • 死亡狀態:線程執行完了或者因異常退出了run方法,線程生命周期結束;

進程和線程比較:

  • 線程是CPU調度(執行任務)的最小單位,是程序執行的最小單元;
  • 進程是CPU分配資源和調度的單位;
  • 一個程序可以對應多個進程,一個進程可以有多個線程,但至少要有一個線程,而一個線程只能屬于一個進程;
  • 同一個進程內的線程共享進程的所有資源;

多線程:

  • 概念:一個進程中可以開啟多條線程,每一條線程可以并行(同時)執行不同的任務;
  • 原理:同一時間,CPU只能處理一條線程,只有一條線程在工作,多線程并發(同時)執行,其實是CPU快速的在多條線程之間調度(切換),如果CPU調度線程的時間足夠快,就造成了多線程并發執行的假象;
  • 注意:如果線程很多,CPU會在N多線程之間調度,會消耗大量CPU資源,每條線程被調度執行的頻次會降低(線程的執行效率會降低);

多線程的優缺點:

  • 優點:?能適當的提高程序的執行效率以及資源利用率(CPU、內存利用率)
  • 缺點:?創建線程是有開銷的,iOS下主要成本包括:內核數據結構(大約1kb)、棧空間(子線程512kb,主線程1MB)、創建線程大約需要90毫秒的創建時間,如果開啟大量的線程,會降低程序的性能(一般最多3到5個);線程越多,CPU在調度線程上的開銷就越大;?程序設計更加復雜(比如線程之間的通信、多線程的數據共享)

主線程:

  • 一個iOS程序運行后,默認會開啟1條線程,稱為“主線程”或“UI線程”
  • 作用:?顯示/刷新UI界面,?處理UI事件(點擊事件,滾動事件,拖拽事件)
  • 使用注意:不要將耗時的操作放到主線程中,耗時操作應放在子線程(后臺線程,非主線程);?凡是和UI相關的操作應放在主線程中操作

?iOS中多線程的實現方案:

  • pthread :一套通用的多線程API,適用于Unix、Linux、Windows等系統,跨平臺、可移植,使用難度大,c語言,線程生命周期由程序員管理
  • NSTread:oc語言,面向對象,簡單易用,可直接操作線程對象 ,線程生命周期由程序員管理
  • GCD:(常用)替代NSTread等線程技術,充分利用設備的多核,線程生命周期自動管理,c語言
  • NSOperation:(常用)底層是GCD,比GCD多了一些更簡單實用的功能,使用更加面向對象,線程生命周期自動管理

?

?后面的文章將著重介紹多線程的實現方案,本文旨在整理收集關于多線程的知識,加深對多線程的理解與認識,如有理解不當之處,歡迎交流與指正!

?

轉載于:https://www.cnblogs.com/hs-funky/p/6512515.html

總結

以上是生活随笔為你收集整理的iOS开发 - 线程与进程的认识与理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。