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

神秘使者到Java帝國(guó)傳道協(xié)程,竟被轟了出去!

開(kāi)發(fā) 后端
神秘使者“久聞Java語(yǔ)言跨越平臺(tái),框架眾多,不過(guò)二十年功夫,就已晉升天下第一編程語(yǔ)言,今日一見(jiàn),果然名不虛傳吶!”

[[346465]]

神秘使者“久聞Java語(yǔ)言跨越平臺(tái),框架眾多,不過(guò)二十年功夫,就已晉升天下第一編程語(yǔ)言,今日一見(jiàn),果然名不虛傳吶!”

“使者先生您過(guò)獎(jiǎng)了,咱們快些走,國(guó)王陛下已經(jīng)等候多時(shí)了”

今日,Java帝國(guó)朝堂之上迎來(lái)了一位神秘的來(lái)賓。

[[346466]]

 

來(lái)到大殿之上,只見(jiàn)國(guó)王正襟危坐,閉目養(yǎng)神,不怒自威,堂下群臣咸集,紛紛側(cè)目。

“來(lái)者何人?”,國(guó)王一旁的內(nèi)侍問(wèn)到。

“我乃GoLang帝國(guó)使者——Goroutine”,使者答道。

[[346467]]

 

“GoLang帝國(guó)?何方番邦小國(guó)?寡人竟從未聽(tīng)聞”,國(guó)王閉眼說(shuō)到。

說(shuō)罷,群臣皆笑了起來(lái)。

“來(lái)此所為何事?”,內(nèi)侍繼續(xù)問(wèn)到。

使者回答:“我此行特為傳道而來(lái)”

說(shuō)完,國(guó)王睜開(kāi)了眼睛,“傳道?我Java帝國(guó)乃天下第一編程帝國(guó),只有我們傳出去,哪有學(xué)別人之道?”

使者不卑不亢,說(shuō)到:“Java帝國(guó)雖如日中天,但卻有一處缺陷,假以時(shí)日,必成大患”

“哦,你倒是說(shuō)說(shuō)看,如若言語(yǔ)不通,即刻轟出殿去。”,國(guó)王厲聲喝到。

“敢問(wèn)陛下,Java線程執(zhí)行到阻塞函數(shù)時(shí),該當(dāng)如何?”,使者問(wèn)到。

一旁的線程大臣見(jiàn)狀,上前說(shuō)到:“遇到阻塞那自然要被操作系統(tǒng)掛起,切換到別的線程”

“敢問(wèn)大人,線程切換是否需要成本?如果大量線程頻繁切換,成本又當(dāng)如何?”,使者追問(wèn)到。

“你若關(guān)心這個(gè)問(wèn)題,那就不用阻塞函數(shù),通過(guò)異步回調(diào)來(lái)進(jìn)行”,線程大臣答道。

使者嘴角上揚(yáng),微微一笑,“好一個(gè)異步回調(diào)!異步回調(diào)確實(shí)不用阻塞,不過(guò)它有兩宗罪,其一:割裂了原來(lái)的代碼業(yè)務(wù)邏輯,其二:陷入回調(diào)地獄難以維護(hù)”

 

“這也不行,那也不行,你這人還真難伺候”,線程大臣有些急了。

使者轉(zhuǎn)身面向國(guó)王說(shuō)到:“啟稟陛下,我有一法,可讓線程遇到阻塞函數(shù)后不需切換線程,也不用異步回調(diào)還可以繼續(xù)運(yùn)行下去,是高并發(fā)開(kāi)發(fā)神技”

國(guó)王一聽(tīng)來(lái)了興趣:“哦,還有這種事?說(shuō)來(lái)聽(tīng)聽(tīng)”

使者拜了一拜,說(shuō)到:“線程可以在遇到阻塞的地方后,保存執(zhí)行的上下文,轉(zhuǎn)而去執(zhí)行別處的代碼。待阻塞的請(qǐng)求完成后,再轉(zhuǎn)而回去繼續(xù)執(zhí)行”

 

國(guó)王不解,問(wèn)到:“什么叫轉(zhuǎn)而去執(zhí)行別處的代碼?什么叫回去繼續(xù)執(zhí)行?這函數(shù)執(zhí)行到一半還能中途退出再回來(lái)?”

“是的,沒(méi)錯(cuò)!”,使者回答。

此話一出,朝堂上議論紛紛,群臣都露出了鄙夷的笑容。

“簡(jiǎn)直荒謬!函數(shù)執(zhí)行從進(jìn)入到return退出,從來(lái)都是一氣呵成,哪有中途執(zhí)行一半退出,再回來(lái)接著執(zhí)行的道理?簡(jiǎn)直聞所未聞!”,一旁的線程大臣說(shuō)到。

使者繼續(xù)說(shuō)到:“一氣呵成?恐怕不是吧?線程執(zhí)行函數(shù)中途,遇到時(shí)間片用完或者遇到I/O阻塞,就會(huì)被操作系統(tǒng)保存上下文后掛起,切換到其他線程。而后等到機(jī)會(huì)再回過(guò)頭繼續(xù)執(zhí)行,不是嗎?”

 

線程大臣怒斥道:“強(qiáng)詞奪理!你說(shuō)的這情況是操作系統(tǒng)在調(diào)度管理多個(gè)線程,對(duì)咱們的應(yīng)用層線程來(lái)說(shuō)都是透明的,無(wú)需關(guān)心”

使者沒(méi)有退讓,卻問(wèn)道:“既然操作系統(tǒng)可以調(diào)度管理多個(gè)線程,那為何線程不可以調(diào)度管理函數(shù)的執(zhí)行?”

群臣再次交頭接耳,議論起來(lái)。

“陛下,此番邦使者妖言惑眾,微臣建議即刻逐出大殿,以正視聽(tīng)!”

國(guó)王應(yīng)允,隨即遣人上前。

不待侍衛(wèi)上前,使者自行離去,邊走邊說(shuō)到:“可嘆!堂堂Java帝國(guó),卻容不下一個(gè)新技術(shù)”

臨別相會(huì)

使者心灰意冷,打算離開(kāi)Java帝國(guó),卻在半道上被人給攔了下來(lái)。

“先生請(qǐng)留步,我家主人請(qǐng)先生府上相會(huì)”

使者來(lái)到府上,原來(lái)主人乃當(dāng)?shù)匾桓缓类l(xiāng)紳。

“先生今日在朝堂之事,我已聽(tīng)說(shuō),在下對(duì)先生提到的函數(shù)執(zhí)行過(guò)程中可中斷和恢復(fù)的技術(shù)頗有興趣,還請(qǐng)先生不吝賜教”,主人說(shuō)完拜了一拜。

“賜教不敢當(dāng),我此次來(lái)Java帝國(guó),所傳之道名叫協(xié)程,是一種高并發(fā)開(kāi)發(fā)的絕技,可無(wú)奈貴國(guó)國(guó)君與大臣皆不識(shí)貨,無(wú)功而返,可惜啊,可惜!”,使者嘆息到

 

“協(xié)程?這是何物?我只聽(tīng)說(shuō)過(guò)進(jìn)程和線程,卻是從未聽(tīng)過(guò)協(xié)程”

使者起身說(shuō)到:“線程是操作系統(tǒng)抽象出來(lái)的執(zhí)行流,由操作系統(tǒng)統(tǒng)一調(diào)度管理。那在一個(gè)線程中,同樣可以抽象出多個(gè)執(zhí)行流,由線程來(lái)統(tǒng)一調(diào)度管理。這線程之上抽象的執(zhí)行流就是協(xié)程”

主人有些不解,問(wèn)到:“一個(gè)線程怎么會(huì)有多個(gè)執(zhí)行流呢?”

“這便是我今日在朝堂上說(shuō)的,線程執(zhí)行函數(shù)遇到阻塞后,可以保存上下文后退出,轉(zhuǎn)而執(zhí)行別處的代碼,這里就從一個(gè)執(zhí)行流轉(zhuǎn)向了另外的執(zhí)行流”,使者解釋到。

主人拍案而起,“原來(lái)是這個(gè)意思,妙哉,妙哉啊!不過(guò),這線程是操作系統(tǒng)在調(diào)度管理,那線程里抽象出來(lái)的執(zhí)行流,也就是協(xié)程,該怎么調(diào)度管理呢?操作系統(tǒng)可以通過(guò)時(shí)鐘中斷和系統(tǒng)調(diào)用進(jìn)入內(nèi)核來(lái)剝奪線程的執(zhí)行權(quán),那線程該如何剝奪協(xié)程的執(zhí)行權(quán)來(lái)實(shí)現(xiàn)調(diào)度管理呢?”

 

“真是個(gè)好問(wèn)題!線程的調(diào)度由操作系統(tǒng)來(lái)管理,是搶占式調(diào)度。而協(xié)程不同,協(xié)程需要互相配合,主動(dòng)交出執(zhí)行權(quán),這也是協(xié)程的名字——協(xié)作式程序的來(lái)歷”

“主動(dòng)交出執(zhí)行權(quán)?如何辦到?”,主人追問(wèn)。

“辦法有很多,比如C++帝國(guó)有一協(xié)程框架,名叫l(wèi)ibco,他通過(guò)HOOK關(guān)鍵的系統(tǒng)函數(shù)來(lái)實(shí)現(xiàn)調(diào)度器的介入”

“那你們Golang是怎么做的?也是這樣嗎?”

“我們Golang帝國(guó)可不一樣,我們先天設(shè)計(jì)就是支持協(xié)程,系統(tǒng)調(diào)用都被我們封裝好了,應(yīng)用程序調(diào)用時(shí)遇到需要阻塞的,像是文件讀寫Read/Write、Sleep我們的調(diào)度器就能有機(jī)會(huì)介入,去執(zhí)行調(diào)度管理了”,使者得意的說(shuō)到。

 

 

主人思考片刻,問(wèn)到:“那我們Java該如何實(shí)現(xiàn)呢,還請(qǐng)先生賜教”

“你們Java語(yǔ)言,是通過(guò)JVM在執(zhí)行,字節(jié)碼的執(zhí)行都在JVM的掌控之中,要想實(shí)現(xiàn)對(duì)應(yīng)用代碼執(zhí)行流的中斷和恢復(fù)還不是易如反掌?”,使者說(shuō)到。

主人點(diǎn)了點(diǎn)頭,若有所思。

新的征程

主人與使者交談甚歡,不知不覺(jué)已近黃昏。

主人起身說(shuō)到:“今蒙先生賜教,大慰平生。還請(qǐng)先生在府上多留時(shí)日,我好細(xì)細(xì)請(qǐng)教。”

使者連連揮手,說(shuō)到:“我還有要事在身,明日就要離去”

“不知先生欲往何處?”

“聽(tīng)說(shuō)C++帝國(guó)又要發(fā)布新版本,我打算前往傳道”

主人面露疑惑:“C++帝國(guó)不是有l(wèi)ibco了嗎?”

“libco終究不是朝廷之物,此番前去,希望可以讓協(xié)程納入新的官方標(biāo)準(zhǔn)”

翌日清晨,使者拜別主人,策馬離去。

不久,Java帝國(guó)朝堂上傳來(lái)消息,民間有人推出了協(xié)程框架——Quasar,一時(shí)朝野震動(dòng)。

本文轉(zhuǎn)載自微信公眾號(hào)「編程技術(shù)宇宙」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系編程技術(shù)宇宙公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 編程技術(shù)宇宙
相關(guān)推薦

2021-09-16 09:59:13

PythonJavaScript代碼

2023-11-17 11:36:59

協(xié)程纖程操作系統(tǒng)

2025-02-08 09:13:40

2021-12-09 06:41:56

Python協(xié)程多并發(fā)

2023-10-24 19:37:34

協(xié)程Java

2024-12-23 08:00:45

2016-10-28 17:39:47

phpgolangcoroutine

2017-05-02 11:38:00

PHP協(xié)程實(shí)現(xiàn)過(guò)程

2020-11-29 17:03:08

進(jìn)程線程協(xié)程

2023-08-08 07:18:17

協(xié)程管道函數(shù)

2023-11-04 20:00:02

C++20協(xié)程

2024-02-05 09:06:25

Python協(xié)程Asyncio庫(kù)

2023-12-24 12:56:36

協(xié)程

2022-04-08 07:32:24

JavaJUCThreadLoca

2022-09-06 20:30:48

協(xié)程Context主線程

2021-08-04 16:19:55

AndroidKotin協(xié)程Coroutines

2021-04-25 09:36:20

Go協(xié)程線程

2024-06-27 07:56:49

2023-10-12 09:46:00

并發(fā)模型線程

2018-12-04 14:00:41

協(xié)程編程模式PHP
點(diǎn)贊
收藏

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