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

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

事件處理中的死鎖

事件處理中的死鎖

Go
慕妹3242003 2022-01-10 10:22:20
所以我有一個(gè)用于事件處理的通道,主服務(wù)器 goroutine 在這個(gè)通道上選擇并在收到的每個(gè)事件上調(diào)用事件處理程序:evtCh := make(chan Event)// server loop:for !quit {    select {    case e := <- evtCh:        handleEvent(e)        break    case quit := <-quitCh:        //finish}// for send a new event to processingfunc addEvent(e Event) {    evtCh <- e}handleEvent將在事件類型上調(diào)用已注冊的處理程序。我必須func registerEventHandler(typ EventType, func(Event))處理登記冊。該程序?qū)⒅С钟脩艟帉憯U(kuò)展,這意味著他們可以注冊自己的處理程序來處理事件?,F(xiàn)在問題出現(xiàn)在用戶的事件處理程序中,他們可能通過調(diào)用向服務(wù)器發(fā)送新事件addEvent,這將導(dǎo)致服務(wù)器掛起,因?yàn)槭录幚沓绦虮旧硎窃诜?wù)器主循環(huán)的上下文中調(diào)用的(在 for 循環(huán)中)。我該如何優(yōu)雅地處理這種情況?用切片建模的隊(duì)列是個(gè)好主意嗎?
查看完整描述

1 回答

?
天涯盡頭無女友

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

為了使事情更加異步,您可以

  • 為事件通道增加容量

    evtCh := make(chan Event, 10)

  • 異步調(diào)用handleEvent(e)

    go handleEvent(e)

  • 在處理程序中異步添加事件

    go addEvent(e)

或者,如果您希望以確定的順序處理事件,您可以handleEvent(e)直接調(diào)用處理程序而不是addEvent(e)


查看完整回答
反對 回復(fù) 2022-01-10
  • 1 回答
  • 0 關(guān)注
  • 189 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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