grpcクライアントをgoroutineで動かし、
grpcサーバのサービスを呼び出す処理をしています。
grpcサーバ側の処理で、grcpクライアントからのipアドレスを取得して、
パッケージaのグローバル変数ipに保持し、それを出力した場合、
スレッドセーフは守られるのでしょうか?(自分のリクエスト中はipは書き変わらない)
サンプルコードは以下になります。
-- main.go --------------------- package main import ( "a" "b" ) func main(){ // grpcクライアントから送られたipアドレスの取得 ip := getGrpcClientMsg(); a.SetIp(ip) b.Print() } -- a.go --------------------- package a var ip string func SetIp(str string){ ip = str } func GetIp() string { return ip } -- b.go --------------------- package b import ( "a" "fmt" ) func Print() { fmt.Println(a.GetIp()) }
状況を再現できる情報が不足しているのでよほどのことがない限り回答はつかないと思います。
ある仮定をもとにした回答を付け足しておきます。