Slide 11
Slide 11 text
(対処2)ブロックしないchannelを使う
• channelもブロックする可能性は有るけど
func
(ch
*HogeChan)
buffer(){
var
next
interface{}
for
{
select{
case
data
:=
<-‐
ch.inChan:
ch.queue.Enqueue(data)
case
ch.outChan
<-‐
next:
ch.queue.Dequeue()
}
if
ch.queue.Length()
>
0{
next
=
ch.queue.Peak()
}else{
next
=
nil
}
}
}
• queueを持ったgorou?neを間に噛ま
せばブロックしない
• 参考
– hFps://github.com/eapache/channels
後ろが詰まっている時はこのcaseが呼ばれず常に
inputの⽅方のcaseが呼ばれてselect抜けるので
inChanへの書き込みがブロックしなくなる
擬似コードなのでそのまま使っちゃダメ