Pada artikel sebelumnya, telah kita bahas data races di golang. Kali ini kita akan mencegahnya agar tidak terjadi menggunakan sync.WaitGroup
.
Caranya cukup mudah.
package main import ( "fmt" "sync" ) func getText() string { t := "hi" var waitgroup sync.WaitGroup waitgroup.Add(1) // go routine #2 go func() { t = "hello" waitgroup.Done() }() waitgroup.Wait() return t } // go routine #1 func main() { fmt.Println(getText()) }
Source code: https://play.golang.org/p/lYasbbWmB0j
Jalankan dengan -race
:
$ go run -race main.go main* hello
Dan warning DATA RACE
pun tidak muncul lagi.
Top comments (0)