Pada artikel sebelumnya, kita telah memperbaiki data race dengan WaitGroup
.
Kali ini kita akan mencegah data race menggunakan channel.
Caranya sangat mudah.
package main
import (
"fmt"
)
func getText() string {
t := "hi"
done := make(chan bool)
// go routine #2
go func() {
t = "hello"
done <- true
}()
<-done
return t
}
// go routine #1
func main() {
fmt.Println(getText())
}
Source code: https://play.golang.org/p/INwBrA67cCu
Jalankan dengan -race
:
$ go run -race main.go
hello
Dan warning DATA RACE
pun tidak muncul lagi.
Top comments (0)