温馨提示×

Golang在Linux中如何实现并发控制

小樊
48
2026-01-09 11:02:25
栏目: 编程语言

在Golang中,实现并发控制的主要方法是使用goroutines和channels。goroutines是轻量级的线程,可以在程序中同时运行多个任务。channels则用于在goroutines之间传递数据和同步操作。

以下是一些在Linux中使用Golang实现并发控制的方法:

  1. 使用go关键字创建goroutines:
package main

import (
	"fmt"
	"time"
)

func printNumbers() {
	for i := 1; i <= 5; i++ {
		fmt.Printf("Number: %d\n", i)
		time.Sleep(1 * time.Second)
	}
}

func main() {
	go printNumbers()
	time.Sleep(6 * time.Second)
}
  1. 使用channels在goroutines之间传递数据:
package main

import (
	"fmt"
)

func sum(numbers []int, result chan int) {
	sum := 0
	for _, number := range numbers {
		sum += number
	}
	result <- sum
}

func main() {
	numbers := []int{1, 2, 3, 4, 5}
	result := make(chan int)

	go sum(numbers, result)

	total := <-result
	fmt.Printf("Sum: %d\n", total)
}
  1. 使用sync.WaitGroup等待一组goroutines完成:
package main

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

func printNumbers(wg *sync.WaitGroup) {
	defer wg.Done()

	for i := 1; i <= 5; i++ {
		fmt.Printf("Number: %d\n", i)
		time.Sleep(1 * time.Second)
	}
}

func main() {
	var wg sync.WaitGroup

	wg.Add(1)
	go printNumbers(&wg)

	wg.Wait()
}
  1. 使用sync.Mutex实现互斥锁:
package main

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

var counter int
var mutex sync.Mutex

func incrementCounter() {
	mutex.Lock()
	defer mutex.Unlock()

	counter++
	fmt.Printf("Counter: %d\n", counter)
}

func main() {
	for i := 0; i < 5; i++ {
		go incrementCounter()
		time.Sleep(1 * time.Second)
	}
}

这些方法可以帮助你在Linux中使用Golang实现并发控制。你可以根据具体需求选择合适的方法。

0