第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

長(zhǎng)異步等待鏈會(huì)導(dǎo)致大量?jī)?nèi)存消耗嗎?(理論上)

長(zhǎng)異步等待鏈會(huì)導(dǎo)致大量?jī)?nèi)存消耗嗎?(理論上)

C#
人到中年有點(diǎn)甜 2022-12-24 10:37:29
查看這段代碼:public async Task<T> ConsumeAsync()    {          await a();          await b();          await c();          await d();          //..    }假設(shè)a,b,c,d還有嵌套的異步等待(等等)異步/等待 POV - 對(duì)于每個(gè)await,都有一個(gè)狀態(tài)機(jī)被保留。問(wèn)題(理論):由于每個(gè)狀態(tài)機(jī)都保存在內(nèi)存中,這是否會(huì)導(dǎo)致內(nèi)存消耗大?這可能是一個(gè)模糊的問(wèn)題,但如果有很多狀態(tài),似乎不可避免地不會(huì)懷疑所保留的狀態(tài)機(jī)的大小。
查看完整描述

3 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

由于每個(gè)狀態(tài)機(jī)都保存在內(nèi)存中,這會(huì)不會(huì)導(dǎo)致內(nèi)存消耗大?

不太可能。每個(gè)狀態(tài)機(jī)將在外部占用幾十個(gè)字節(jié)。

所以只有當(dāng)你有很多的時(shí)候才重要。嵌套并不會(huì)真正導(dǎo)致這種情況,而是執(zhí)行Task[]可能的成員。

但這并不是任何其他資源類型的新內(nèi)容或不同之處。


查看完整回答
反對(duì) 回復(fù) 2022-12-24
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

異步/等待 POV - 對(duì)于每個(gè) await ,都有一個(gè)狀態(tài)機(jī)被保留。

不對(duì)。編譯器為每個(gè)async方法生成一個(gè)狀態(tài)機(jī)。方法中的局部變量被提升到狀態(tài)機(jī)上的字段中。方法的主體(基本上)被分解為一個(gè)switch語(yǔ)句,每個(gè)語(yǔ)句case對(duì)應(yīng)于await語(yǔ)句之間的方法的一部分。Anint用于跟蹤方法的哪一部分已被執(zhí)行(即case接下來(lái)應(yīng)該執(zhí)行哪一部分)。

您的方法a()、b()等可能有自己的狀態(tài)機(jī),也可能沒(méi)有(取決于它們是否被標(biāo)記async)。即使他們這樣做,在您的示例中,一次也只會(huì)實(shí)例化其中一個(gè)狀態(tài)機(jī)。

SharpLab 是探索這些內(nèi)容的絕佳資源。例子。


查看完整回答
反對(duì) 回復(fù) 2022-12-24
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

有一個(gè)額外的成本,但它是相對(duì)苗條的。

與常規(guī)功能相比的額外費(fèi)用:

  • 狀態(tài)機(jī)類

  • 這個(gè)類的實(shí)例

  • 一個(gè) int 用于執(zhí)行階段

  • AsyncTaskMethodBuilder 實(shí)例

此外,函數(shù)的局部變量將被轉(zhuǎn)換為狀態(tài)機(jī)的字段。這會(huì)將一些內(nèi)存從堆棧移動(dòng)到堆。

我建議反編譯一些簡(jiǎn)單的異步函數(shù),以查看生成的狀態(tài)機(jī)并有一個(gè)直覺(jué)會(huì)發(fā)生什么。

也有一些在線工具可以做到這一點(diǎn)(比如 sharplab.io)查看一個(gè)簡(jiǎn)單的異步函數(shù)的反編譯結(jié)果


查看完整回答
反對(duì) 回復(fù) 2022-12-24
  • 3 回答
  • 0 關(guān)注
  • 136 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)