Go语言 之死锁

package main

import (
    "fmt"
)

func main() {
    c := make(chan int)
    c <- 6
    fmt.Println("send")
    go func() {
        a := <-c
        fmt.Println(a)
    }()
    fmt.Println("over")
    //fatal error: all goroutines are asleep - deadlock!
}

上面例子中把创建协程放在发送通道数据前可以正常运行。

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。

posted @ 2019-07-04 16:15  样子2018  阅读(409)  评论(0编辑  收藏  举报