今天复习一下 select 的语法
select {
case <- ch1:
//...
case ch2 <- x:
//...
default:
//...
}
若 select 没任何 case 和 default,则会永远 block
select {}
在 select 里我们也能用 receive 操作拿到值
select {
case x <- ch:
fmt.Println(x)
}
透过 select 的 default case 我可以达到 non-blocking 的效果,也就是说 communication 还没准备好时,我并不想被 select 给 block 住。以下我也顺便附上 blocking 的程序做对照
non blocking send
// non blocking send
select {
case ch <- x:
//...
default:
//...
}
// blocking send
ch <- x
non blocking receive
// non blocking receive
select {
case x := <- ch:
//...
default:
//...
}
// blocking receive
x := <- ch
今天却蛮废的就写了个 select 语法,但也没办法都忘光了,明天来看 Go Concurrency Patterns - Rob Pile
>>: # Day 4 Feature status on riscv architecture
DOM节点的建立 建立新元素 建立新元素,系使用 document.createElement(),...
今天我们用实际的例子来练习各种 RxJS operators 的组合运用!在一般的应用程序里面,资料...
v-if v-if/v-else/v-else-if 的用法就像是JavaScript的判断式,使...
今天要来介绍类别实作介面, 介面型别我觉得很大的一个优势是可以重复使用, 因此我们就来说说这个吧。 ...
0x1 前言 发现缺的东西太多了,所以临时改成投赞助的画面 0x2 修改内容 首页画面 // res...