Go 语言中让某个协程无限堵塞的几种方式.
Go 语言中让某个协程无限堵塞的几种方式.
main
函数启动一些协程之后就无限阻塞
死循环法
1 | for {;} |
使用这种方式会让你的程序 随机暴毙
原因当且仅当遇到系统调用和
为什么要浪费
不仅如此
死循环让出时间片法
1 | for { |
死循环执行 runtime.Gosched()
这一函数
死循环Sleep 法
1 | for { |
同上
阻塞的读取空数据法:
1 | blockChan := make(chan int) |
这种方法创建一个不会有数据的Channel
无效率问题
WaitGroup 法:
1 | w := sync.WaitGroup{} |
创建一个WaitGroup
wait
方法无限等待
Select 法:
1 | select{} |
select
被用于同步或异步的从Channel
中读取数据Channel
default
来进行异步读取channel
中读取数据
没有创建任何变量