golang并发示例

Viewed 4

golang怎么实现并发

1 Answers

在Go语言中,实现并发主要通过goroutinechannel来完成。goroutine是Go语言并发设计的核心,它是一种轻量级的线程,由Go运行时管理。channel则是goroutine之间进行通信的桥梁。

下面是一个简单的并发示例,展示了如何使用goroutinechannel来实现并发:

package main

import (
	"fmt"
	"time"
)

// 一个简单的函数,模拟耗时操作
func worker(id int, c chan int) {
	for n := range c {
		fmt.Printf("Worker %d received %c\n", id, n)
	}
}

func main() {
	// 创建一个channel
	c := make(chan int)

	// 启动3个goroutine,每个goroutine处理来自channel的数据
	for i := 1; i <= 3; i++ {
		go worker(i, c)
	}

	// 向channel发送数据
	for i := 0; i < 5; i++ {
		c <- 'a' + i
		time.Sleep(time.Millisecond * 500) // 模拟一些延迟
	}

	// 关闭channel
	close(c)

	// 等待一段时间,确保所有goroutine完成
	time.Sleep(time.Second)
}

在这个示例中:

  1. 我们定义了一个worker函数,它从channel接收数据并处理。
  2. main函数中,我们创建了一个channel,并启动了3个goroutine来并发处理来自channel的数据。
  3. 我们向channel发送了一些数据,每个数据都会被一个goroutine接收并处理。
  4. 最后,我们关闭了channel,并等待一段时间以确保所有goroutine完成处理。

这个示例展示了如何使用goroutinechannel来实现简单的并发处理。在实际应用中,可以根据需要调整goroutine的数量和channel的使用方式,以实现更复杂的并发控制和数据共享。

桂ICP备18011783号-1