A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p q r s t u v w x y z
在 Go 语言里,你不但可以使用原子函数和互斥锁来保证对共享资源的安全访问以及消除竞争状态,还可以使用通道,通过发送和接收必要共享的资源,在 goroutine 之间做同步。
当一个资源必要在 goroutine 之间共享时,通道在 goroutine 之间架起了一个管道,并提供了确保同步交换数据的机制。声明通道时,必要指定将要被共享的数据的类型。可以通过通道共享内置类型、命名类型、布局类型和引用类型的值大概指针。
在 Go 语言中必要使用内置函数 make 来创建一个通道
// 无缓冲的整型通道
unbuffered := make(chan int)
// 有缓冲的字符串通道
buffered := make(chan string, 10)
复制代码
make 的第一个参数必要是关键字 chan,之后跟着允许通道交换的数据的类型。假如创建的是一个有缓冲的通道,之后还必要在第二个参数指定这个通道的缓冲区的巨细。
向通道发送值大概指针必要用到<-操纵符