本博客与RayXXZhang的博客保持同步更新,转载请注明来自RayXXZhang的博客-Golang实现带优先级的channel
一般Go语言同时使用多个channel
的方法是使用select
/case
语句配合<-
操作符,比如
select {
case <- chan1:
// do something
case <- chan2:
// do something
}
但是这种实现方式下chan1
和chan2
是同等优先级的。如果要实现带优先级的channel
则需要用到defalut
语句。
在go语言中,如果select
/case
中没有default
子句,则程序会阻塞在select
中,直到其中一个case
语句接收到了数据。
如果有