自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Goroutine 存在的意義是什么?

系統(tǒng)
goroutine是用戶(hù)態(tài)線程,其創(chuàng)建和切換都在用戶(hù)代碼中完成而無(wú)需進(jìn)入操作系統(tǒng)內(nèi)核,所以其開(kāi)銷(xiāo)要遠(yuǎn)遠(yuǎn)小于系統(tǒng)線程的創(chuàng)建和切換。

[[428010]]

線程其實(shí)分兩種:

  • 一種是傳統(tǒng)意義的操作系統(tǒng)線程
  • 一種是編程語(yǔ)言實(shí)現(xiàn)的用戶(hù)態(tài)線程,也稱(chēng)為協(xié)程,在 Go 中就是 goroutine

因此,goroutine 的存在必然是為了換個(gè)方式解決操作系統(tǒng)線程的一些弊端 -- 太重 。

太重表現(xiàn)在如下幾個(gè)方面:

第一:創(chuàng)建和切換太重

操作系統(tǒng)線程的創(chuàng)建和切換都需要進(jìn)入內(nèi)核,而進(jìn)入內(nèi)核所消耗的性能代價(jià)比較高,開(kāi)銷(xiāo)較大;

第二:內(nèi)存使用太重

一方面,為了盡量避免極端情況下操作系統(tǒng)線程棧的溢出,內(nèi)核在創(chuàng)建操作系統(tǒng)線程時(shí)默認(rèn)會(huì)為其分配一個(gè)較大的棧內(nèi)存(虛擬地址空間,內(nèi)核并不會(huì)一開(kāi)始就分配這么多的物理內(nèi)存),然而在絕大多數(shù)情況下,系統(tǒng)線程遠(yuǎn)遠(yuǎn)用不了這么多內(nèi)存,這導(dǎo)致了浪費(fèi);

另一方面,棧內(nèi)存空間一旦創(chuàng)建和初始化完成之后其大小就不能再有變化,這決定了在某些特殊場(chǎng)景下系統(tǒng)線程棧還是有溢出的風(fēng)險(xiǎn)。

相對(duì)的,用戶(hù)態(tài)的goroutine則輕量得多:

 

  • goroutine是用戶(hù)態(tài)線程,其創(chuàng)建和切換都在用戶(hù)代碼中完成而無(wú)需進(jìn)入操作系統(tǒng)內(nèi)核,所以其開(kāi)銷(xiāo)要遠(yuǎn)遠(yuǎn)小于系統(tǒng)線程的創(chuàng)建和切換;
  • goroutine啟動(dòng)時(shí)默認(rèn)棧大小只有2k,這在多數(shù)情況下已經(jīng)夠用了,即使不夠用,goroutine的棧也會(huì)自動(dòng)擴(kuò)大,同時(shí),如果棧太大了過(guò)于浪費(fèi)它還能自動(dòng)收縮,這樣既沒(méi)有棧溢出的風(fēng)險(xiǎn),也不會(huì)造成棧內(nèi)存空間的大量浪費(fèi)。

 

責(zé)任編輯:武曉燕 來(lái)源: Go編程時(shí)光
相關(guān)推薦

2021-09-06 08:55:16

軟件開(kāi)發(fā) 架構(gòu)

2010-06-21 09:18:26

anacron服務(wù)

2024-11-13 15:39:49

AIGCAI

2022-05-11 08:53:13

MySQL鎖機(jī)制

2020-11-04 13:01:38

FastThreadLocalJDK

2012-08-15 09:20:29

數(shù)據(jù)中心軟件定義網(wǎng)絡(luò)openflow

2021-02-25 10:20:26

Java接口代碼

2009-07-22 10:13:30

2018-03-29 13:00:01

2022-01-17 16:02:32

區(qū)塊鏈私有鏈數(shù)據(jù)庫(kù)

2021-09-10 17:02:43

Python協(xié)程goroutine

2020-07-15 10:28:18

區(qū)塊鏈個(gè)人數(shù)據(jù)可信數(shù)據(jù)做對(duì)比

2013-03-08 10:07:20

GO語(yǔ)言Goroutine

2017-05-08 16:13:33

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)深度

2018-01-09 15:18:08

2015-11-03 09:59:10

程序員鼓勵(lì)師

2018-04-02 13:10:41

2024-07-11 16:32:13

代碼Java

2010-01-28 15:38:57

學(xué)習(xí)C++意義

2023-10-29 16:37:23

Goroutine泄露
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)