
package main
import ( "fmt" "net" )
var temp net.IP
func main() { fmt.Println("start......") ch := make(chan int) <-ch fmt.Println("hello world") }
/* start......
*/
package main
import ( "fmt" )
func main() { fmt.Println("start......") ch := make(chan int) <-ch fmt.Println("hello world") }
/* start...... fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan receive]: main.main() */
1 koujianshusheng OP 一个堵塞一个死锁,就因为 net 包? |
2 youngzy 2022-05-27 18:10:51 +08:00 第一个应该也是死锁,没有创建新的协程,主协程阻塞。 去 play ground 试试? |
3 koujianshusheng OP @youngzy 我是在本地环境运行的,play ground 会死锁,但是本地没有 |
4 codehz 2022-05-27 18:43:39 +08:00 via Android 引用 cgo 的包(包括 net )就会关闭死锁检测器 |
5 koujianshusheng OP @codehz 这个说法有参考资料吗,亲 |
6 iBugOne 2022-05-27 18:54:21 +08:00 via Android |
7 koujianshusheng OP @iBugOne 感谢 |
8 lysS 2022-05-27 19:00:54 +08:00 无论是否 import net ,我这里都是 17 没有报错,18 报错 |
9 lysS 2022-05-27 19:03:01 +08:00 知道了,net 没有 cgo ,可以 import "C"来检测 |
10 zuokanyunqishi 2022-05-27 19:11:08 +08:00 go1.18.1 复现。。 |