温馨提示×

Golang中怎么创建和管理goroutine

小亿
87
2024-03-13 17:50:54
栏目: 编程语言

在Golang中,可以使用关键字go来创建一个goroutine。一个goroutine是一个轻量级的线程,它可以并发执行代码。

下面是一个简单的例子,展示如何创建一个goroutine:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	for i := 0; i < 5; i++ {
		fmt.Println("Hello")
		time.Sleep(1 * time.Second)
	}
}

func main() {
	go sayHello()

	fmt.Println("Main function")
	time.Sleep(2 * time.Second)
}

在上面的例子中,sayHello函数被包装在一个goroutine中,通过go sayHello()来创建一个goroutine。在main函数中,我们也打印了一条消息并让主函数休眠2秒,以便给goroutine一些时间来执行。

如果想要管理goroutine,可以使用sync.WaitGroup来等待goroutine的执行结束。下面是一个例子:

package main

import (
	"fmt"
	"sync"
)

func sayHello(wg *sync.WaitGroup) {
	defer wg.Done()
	fmt.Println("Hello")
}

func main() {
	var wg sync.WaitGroup
	wg.Add(1)

	go sayHello(&wg)

	wg.Wait()
	fmt.Println("Main function")
}

在上面的例子中,我们创建了一个sync.WaitGroup,并在goroutine中调用wg.Done()来标记goroutine的完成。在main函数中,我们使用wg.Wait()来等待goroutine的执行结束。

通过以上方法,我们可以创建和管理goroutine。需要注意的是,goroutine是轻量级的线程,因此可以创建大量的goroutine来实现并发执行。

0