在Golang中,可以使用關(guān)鍵字go
來(lái)創(chuàng)建一個(gè)goroutine。一個(gè)goroutine是一個(gè)輕量級(jí)的線程,它可以并發(fā)執(zhí)行代碼。
下面是一個(gè)簡(jiǎn)單的例子,展示如何創(chuàng)建一個(gè)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
函數(shù)被包裝在一個(gè)goroutine中,通過(guò)go sayHello()
來(lái)創(chuàng)建一個(gè)goroutine。在main
函數(shù)中,我們也打印了一條消息并讓主函數(shù)休眠2秒,以便給goroutine一些時(shí)間來(lái)執(zhí)行。
如果想要管理goroutine,可以使用sync.WaitGroup
來(lái)等待goroutine的執(zhí)行結(jié)束。下面是一個(gè)例子:
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")
}
在上面的例子中,我們創(chuàng)建了一個(gè)sync.WaitGroup
,并在goroutine中調(diào)用wg.Done()
來(lái)標(biāo)記goroutine的完成。在main
函數(shù)中,我們使用wg.Wait()
來(lái)等待goroutine的執(zhí)行結(jié)束。
通過(guò)以上方法,我們可以創(chuàng)建和管理goroutine。需要注意的是,goroutine是輕量級(jí)的線程,因此可以創(chuàng)建大量的goroutine來(lái)實(shí)現(xiàn)并發(fā)執(zhí)行。