天天看點

iOS開發多線程篇—多線程簡單介紹(筆記)

實際中應用:主線程隻考慮

顯示\重新整理UI界面

    處理UI事件(比如點選事件、滾動事件、拖拽事件等)


    子線程處理:資料加載或者(耗費時間較長的操作)
           

多線程的主要目的:

線程并發分享 CPU 運算資源

    能适當提高程式的執行效率

    能适當提高資源使用率(CPU、記憶體使用率)

    解決:耗時操作會卡住主線程,嚴重影響UI的流暢度,給使用者一種“卡”的壞體驗
           

關于目前:cpu每次隻執行一個線程(評論中指出多核的問題)進行查找

在百度知道上看到這麼一條答案:

1、在超線程技術的情況下,單核和多核cpu處理并發程序都是并行處理的,但單核并行處理的數量遠低于多核。單核比多核更容易在多程序時假死。
2、多核并不止是多幾個運算器,包括一二級緩存也是獨立的。
           

這篇文章可以看看:https://www.cnblogs.com/hitwhhw09/p/4718404.html

摘自這篇文章的語句:

什麼時候該使用多線程呢?這要分四種情況讨論:

a.多核CPU——計算密集型任務。此時要盡量使用多線程,可以提高任務執行效率,例如加密解密,資料壓縮解壓縮(視訊、音頻、普通資料),否則隻能使一個核心滿載,而其他核心閑置。

b.單核CPU——計算密集型任務。此時的任務已經把CPU資源%消耗了,就沒必要也不可能使用多線程來提高計算效率了;相反,如果要做人機互動,最好還是要用多線程,避免使用者沒法對計算機進行操作。

c.單核CPU——IO密集型任務,使用多線程還是為了人機互動友善,

d.多核CPU——IO密集型任務,這就更不用說了,跟單核時候原因一樣。



程式員需要掌握的技巧/技術

()減少串行化的代碼用以提高效率。這是廢話。

()單一的共享資料分布化:把一個資料複制很多份,讓不同線程可以同時通路。

()負載均衡,分為靜态的和動态的兩種。具體的參見有關文獻。