網路多執行緒你的理解有多少

2022-07-11 09:44:09 字數 2422 閱讀 1014

為什麼要使用多執行緒? 學習多執行緒的目的: 將耗時操作放到後台去執行, 這也是學習多執行緒最主要的目的!

那麼怎樣能看出哪些操作是耗時較多的呢,這裡我們就來模擬一下記憶體幾個區不同的耗時情況:

所以在引入多執行緒之前,我們先來做乙個模擬耗時操作的演練。

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event 

#pragma mark - 模擬耗時操作

- (void)demo

nslog(@"end");

}

列印台輸出結果為:

通過輸出結果可知:迴圈的速度非常非常快; 僅為0.025s

-	(void)touchesbegan:(nsset*)touches withevent:(uievent *)event 

#pragma mark - 模擬耗時操作

- (void)demo

nslog(@"end");

}

列印台輸出結果為:

通過輸出結果可知:操作記憶體的棧空間,速度同樣非常快。僅為 0.026s

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event 

#pragma mark - 模擬耗時操作

- (void)demo

nslog(@"end");

}

列印台輸出結果為:

通過輸出結果可知: 操作記憶體的常量區, 速度比較快(比操作棧區稍微慢點) 0.099s

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event 

#pragma mark - 模擬耗時操作

- (void)demo

nslog(@"end");

}

列印台輸出結果為:

通過輸出結果可知:操作記憶體的堆空間,速度比操作常量區慢;迴圈非常消耗cpu資源: 時間為10.597s

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event 

#pragma mark - 模擬耗時操作

- (void)demo

nslog(@"end");

}

列印台輸出結果為:

從輸出結果可知:i/o操作,速度非常慢。

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event 

#pragma mark - 模擬耗時操作

- (void)demo

nslog(@"end");

}

列印台輸出結果為:

由輸出結果可知:引入多執行緒技術之後,即便是i/o操作這種耗時操作,也不會造成程式卡頓。小結:

(1) 耗時操作的後果:如果只有主線程,會造成程式卡頓,使用者體驗極差。

(2) 學習多執行緒的目的:將耗時操作放到後台執行緒去執行。

(3) 通過耗時操作演練可知,操作效率的順序:

i/o操作 < 堆區 < 常量區 < 棧區。

(4) 使用@」」定義的字串儲存在常量區,使用stringwithformat拼接的字串儲存在堆區。

(5) 網路操作也屬於耗時操作,通過多執行緒技術可以將耗時的網路操作放到後台執行緒去執行,從而提高程式執行效率,改善使用者體驗。

(6) - (void)performselectorinbackground:(sel)aselector withobject:(nullable id)arg 在後台執行某方法。

思考:(1)耗時操作會對我們的應用程式產生什麼影響?

耗時操作的後果:在主線程,耗時操作會造成程式卡頓,使用者會以為程式死了,使用者體驗極差。

(2)耗時操作造成的程式卡頓問題該怎麼解決?

要想解決程式卡頓問題,就需要使用多執行緒技術,將耗時操作放到子執行緒去執行。

綜上所述,就可以看出多執行緒在我們實際開發中,是多麼的重要!!!

多執行緒的理解

1.減少了建立和銷毀執行緒的次數,每個工作執行緒都可以被重複利用,可執行多個任務。2.可以根據系統的承受能力,調整執行緒池中工作線執行緒的數目,防止因為消耗過多的記憶體,而把伺服器累趴下 每個執行緒需要大約1mb記憶體,執行緒開的越多,消耗的記憶體也就越大,最後宕機 要配置乙個執行緒池是比較複雜的,...

你C 的IQ 有多少?

okay,在論壇上我看到過這樣一道c 的面試題 如何將int p 10 初始化?a int p 10 new int 10 10 b int p 10 new int 10 10 10 c int p 10 new int 10 10 哈哈,很好的一道題,考察很多的知識點,最重要的考察你c 的iq。...

你的學習時間有多少

感覺時間過得越來越快 尤其是在大學,發現很多同學在大三下學期或剛公升入大四就已在找工作了,有的也找到了。於是很多大四的學生正兒八經地 步入 職場,開始了工作。但是,在找到工作之前,不妨替學生們算一算幾年裡用於學習的時間。按照正常的節假日計算,每年的學習天數大約是250天,再減去學期中的節假日 病事假...