linux

Linux中Golang如何使用并发特性

小樊
31
2025-12-28 02:50:39
栏目: 编程语言

在 Linux 中,Golang 提供了强大的并发特性,主要通过 goroutines 和 channels 实现。goroutines 是轻量级的线程,可以在程序中同时运行多个任务。channels 则用于在 goroutines 之间传递数据。

以下是一个简单的示例,展示了如何在 Golang 中使用并发特性:

package main

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

func main() {
	var wg sync.WaitGroup

	// 创建一个带缓冲的 channel,用于存储结果
	results := make(chan int, 3)

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

			// 模拟耗时操作
			time.Sleep(time.Duration(id) * time.Second)

			// 将结果发送到 channel
			results <- id * 2
		}(i)
	}

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

	// 从 channel 中读取结果并打印
	for result := range results {
		fmt.Println("Result:", result)
	}
}

在这个示例中,我们首先创建了一个带缓冲的 channel results,用于存储 goroutines 的计算结果。然后,我们启动了 3 个 goroutines,每个 goroutine 负责计算一个值并将其发送到 results channel。最后,我们使用 sync.WaitGroup 等待所有 goroutines 完成,并关闭 results channel。接着,我们从 results channel 中读取结果并打印。

这个示例展示了如何在 Golang 中使用并发特性来同时执行多个任务,并通过 channel 在它们之间传递数据。你可以根据自己的需求调整这个示例,以实现更复杂的并发操作。

0
看了该问题的人还看了