linux

Golang在Linux上如何实现并发

小樊
40
2025-09-02 15:14:59
栏目: 编程语言

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

package main

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

func main() {
	var wg sync.WaitGroup

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

	// 启动一个goroutine,用于发送数据
	wg.Add(1)
	go func() {
		defer wg.Done()
		for i := 0; i < 5; i++ {
			dataChan <- i
			time.Sleep(1 * time.Second)
		}
		close(dataChan)
	}()

	// 启动另一个goroutine,用于接收数据
	wg.Add(1)
	go func() {
		defer wg.Done()
		for data := range dataChan {
			fmt.Println("Received data:", data)
		}
	}()

	// 等待所有goroutines完成
	wg.Wait()
	fmt.Println("All goroutines finished.")
}

在这个示例中,我们创建了两个goroutines:一个用于发送数据,另一个用于接收数据。我们使用sync.WaitGroup来确保主函数等待所有goroutines完成。数据通过dataChan channel在两个goroutines之间传递。

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

go run main.go

程序将每秒输出一次接收到的数据,直到发送完所有数据。

0
看了该问题的人还看了