IT入门 > 教程 >
  • Go语言goroutine的使用示例

    2025/10/15 点击:4415

    可以通过在函数调用前加go关键字启动goroutine。下面是一个多个goroutine并发执行的例子。 package mainimport ( "fmt" "time")func printNumbers() { for i := 1; i 使用time.Sleep等待goroutine执行不是好方法,

  • Go语言CSP并发模型简介

    2025/10/15 点击:7369

    Go语言的CSP(Communicating Sequential Processes)并发模型是一种通过通信来共享内存的并发编程模式。在CSP模型中,并发实体(goroutine)之间通过通道(channel)进行通信。 package mainimport ( "

  • Go语言CSP模型中的缓冲通道

    2025/10/15 点击:9726

    Go语言的通道可以是有缓冲的。有缓冲的通道可以存储一定数量的数据,在缓冲区未满时,发送操作不会阻塞。 package mainimport ( "fmt")func main() { // 创建一个有缓冲的整数通道,缓冲区大

  • Go语言goroutine间的通信:使用通道(channel)

    2025/10/15 点击:8320

    在Go语言里,能利用通道(channel)达成goroutine间的通信。通道就像一个管道,可在不同goroutine间传递数据。 package mainimport "fmt"func main() { // 创建一个整型通道 ch := make(chan int) // 启动一个

  • Go语言goroutine间的通信:带缓冲的通道

    2025/10/15 点击:7445

    在Go语言中,还能使用带缓冲的通道。带缓冲的通道能存储一定数量的数据,无需立即有接收者。 package mainimport "fmt"func main() { // 创建一个带缓冲的整型通道,缓冲区大小为2 ch := make(

  • Go语言channel简介

    2025/10/15 点击:9877

    在Go语言里,channel是一等公民。它可在不同goroutine间安全传递数据,避免并发问题。 package mainimport "fmt"func main() { // 创建一个整数类型的channel ch := make(chan int) fmt.Println(ch) // 输出channe

  • Go语言channel的数据发送与接收

    2025/10/15 点击:1957

    channel可用于数据发送和接收。使用" package mainimport "fmt"func main() { ch := make(chan int) go func() { ch 发送和接收操作默认是阻塞的,即发送数据时若无人接收会阻塞,接收时若无数据也会阻塞

  • Go语言channel与select结合使用 - 基本用法

    2025/10/15 点击:3000

    在Go语言里,channel和select结合使用能处理多个channel的操作。select语句可让程序同时等待多个channel操作,哪个channel准备好了就执行对应的分支。 package mainimport "fmt"func main() { ch1 := make(

  • Go语言channel与select结合使用 - 超时处理

    2025/10/15 点击:470

    结合channel和select可实现超时处理,避免程序无限期阻塞。 package mainimport ( "fmt" "time")func main() { ch := make(chan int) go func() { time.Sleep(2 * time.Second) ch 使用time.After函数可设置超时时间,避免程

  • Go语言使用WaitGroup简介

    2025/10/15 点击:3769

    在Go语言里,WaitGroup可用于等待一组goroutine结束。使用时,先创建sync.WaitGroup实例,用Add方法设置等待的goroutine数量。 package mainimport ( "fmt" "sync")func main() { var wg sync.WaitGroup wg.Add(1) // 设置