-2
私のプログラム:プログラムが同時に100000のゴルーチンを実行し、すべてのゴルーチンが同じ接続にメッセージを送信します複数のゴルーチンが同時にConnのメソッドを呼び出すか?このような
func handle(conn net.Conn) {
msg := "hello, world!"
for i:= 0; i< 100000; i++ {
go func() {
err := write(conn, msg)
}
}
}
func write(conn net.Conn, msg string) error {
mlen := fmt.Sprintf("%04d", len(msg))
_, err := conn.Write([]byte(mlen + msg))
return err
}
は、私は疑問そのサーバーが「hellohelloworldworld」のようなエラーメッセージが表示されますよ、プログラムが私のUbuntu 14.04LTSで動いているときに問題はありません。
ので、同時にコネティカットのメソッドを呼び出す複数のゴルーチンていますか?
============================================== ===========================
どのように私は原子Write
方法を保つことができますか?