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)