3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
注意:go 1.7.0-rc2 確實(shí)闡明了如何釋放與上下文相關(guān)的資源(Sameer Ajmani):
一些用戶沒(méi)有意識(shí)到
Context
用 a創(chuàng)建 aCancelFunc
會(huì)將子樹(shù)附加到父級(jí),并且在CancelFunc
調(diào)用 或取消父級(jí)之前不會(huì)釋放該子樹(shù)。在包文檔中盡早明確這一點(diǎn),以便人們了解這個(gè)包有正確的概念模型。
該文檔現(xiàn)在包括:
對(duì)服務(wù)器的傳入請(qǐng)求應(yīng)創(chuàng)建
Context
,而對(duì)服務(wù)器的傳出調(diào)用應(yīng)接受Context
.
它們之間的函數(shù)調(diào)用鏈必須傳播Context
,可選擇將其替換為Context
使用WithCancel
、WithDeadline
、WithTimeout
、 或 所創(chuàng)建的派生WithValue
。
這些Context
值形成一棵樹(shù):當(dāng) aContext
被取消時(shí),所有Contexts
從它派生的也被取消。的
WithCancel
,WithDeadline
和WithTimeout
函數(shù)返回一個(gè)派生Context
和CancelFunc
。
調(diào)用CancelFunc
取消新的Context
和從它派生的任何上下文,Context
從父樹(shù)的樹(shù)中刪除,并停止任何相關(guān)的計(jì)時(shí)器。在父級(jí)被取消或計(jì)時(shí)器觸發(fā)之前,
未能調(diào)用CancelFunc
泄漏相關(guān)資源Context
。
- 3 回答
- 0 關(guān)注
- 248 瀏覽
添加回答
舉報(bào)