linux

Golang在Linux下如何实现并发

小樊
49
2025-08-21 13:56:03
栏目: 编程语言

在Golang中,实现并发的主要方法是使用goroutines和channels。goroutines是轻量级的线程,它们在Go运行时中被调度和管理。channels则用于在goroutines之间传递数据。下面是一个简单的示例,展示了如何在Linux下使用Golang实现并发:

package main

import (
	"fmt"
	"sync"
	"time"
)

func main() {
	var wg sync.WaitGroup

	// 创建一个channel,用于在goroutines之间传递数据
	dataChan := make(chan int)

	// 启动多个goroutines
	for i := 0; i < 5; i++ {
		wg.Add(1)
		go func(id int) {
			defer wg.Done()

			// 从channel中读取数据
			value := <-dataChan

			// 处理数据
			fmt.Printf("Goroutine %d received value: %d\n", id, value)

			// 模拟处理时间
			time.Sleep(time.Second)
		}(i)
	}

	// 向channel中发送数据
	for i := 0; i < 5; i++ {
		dataChan <- i
	}

	// 关闭channel
	close(dataChan)

	// 等待所有goroutines完成
	wg.Wait()

	fmt.Println("All goroutines finished.")
}

在这个示例中,我们创建了5个goroutines,它们并发地从dataChan channel中读取数据并处理。我们使用sync.WaitGroup来确保所有goroutines在主函数退出之前完成。

要运行此程序,请将其保存为main.go文件,然后在Linux终端中运行以下命令:

go run main.go

这将编译并运行程序,您将看到goroutines并发地处理数据。

0
看了该问题的人还看了