Go語(yǔ)言中的goroutine怎么創(chuàng)建和使用

小億
84
2024-04-12 20:02:07

在Go語(yǔ)言中,可以通過(guò)關(guān)鍵字go來(lái)創(chuàng)建一個(gè)goroutine,goroutine是一種輕量級(jí)的線程,可以并發(fā)執(zhí)行任務(wù)。創(chuàng)建goroutine的語(yǔ)法如下:

go func_name()

其中func_name()是一個(gè)函數(shù)的調(diào)用,該函數(shù)會(huì)在一個(gè)新的goroutine中執(zhí)行。

除此之外,還可以使用匿名函數(shù)來(lái)創(chuàng)建goroutine:

go func() {
    // 執(zhí)行任務(wù)
}()

在使用goroutine時(shí),可以利用通道(channel)來(lái)實(shí)現(xiàn)goroutine之間的通信。可以使用make函數(shù)創(chuàng)建一個(gè)通道,然后使用<-來(lái)進(jìn)行發(fā)送和接收數(shù)據(jù)。例如:

ch := make(chan int)

go func() {
    ch <- 42 // 發(fā)送數(shù)據(jù)到通道
}()

result := <-ch // 從通道中接收數(shù)據(jù)
fmt.Println(result)

注意,在使用goroutine時(shí),需要注意避免數(shù)據(jù)競(jìng)態(tài)問(wèn)題,可以使用sync包中的互斥鎖(Mutex)來(lái)保護(hù)共享數(shù)據(jù)的訪問(wèn)。

0