Golang的goroutine是非抢占式的, 令人相当蛋疼! 有痛不能呻吟...只能配合channel在各goroutine之间传递信号来实现抢占式, 而这形成了golang最灵活与最具性能的核心. 相信, 彩虹总在风雨后...
学会process, thread, routine之间的配合与取舍.
关于channel的猜测:
Golang中Channel的阻塞规则, 注意顺序:
Write端依赖于Read端, 对于无缓冲Channel, 如果没有goroutine去消费Channel, 则write操作一直阻塞, 直到panic:
fatal error: all goroutines are asleep - deadlock!