Goroutine是一种用于在Golang中实现并发处理的机制。

「Goの最大の特徴は并行处理が楽に书けること」とはよく闻くものの,実际に并行处理をGoで书いたことはありませんでした。というわけで,今回はGoroutineを使ったプログラグムを书いてみます。
Goの并行处理は” go”するだけ
Goの并行处理は,并行実行したい处理をメソッドにして,头に” go”を付けて呼出すだけです。
実行结果はこちら。
$去运行sample.go
exec goroutine
ーん,でもこれでは并行で动いているのかどうか,いまいちわからないですね。
并行处理を确认しよう
次のコードを実行して,本当に并行で处理されているかを确认してみましょう。
で実行结果は以下の通り。并行で実行しているため,出力结果がばらばらになっています。実行时间は约5秒です。
$运行main.go
***通话开始***
致电:
致电:b
致电:c
***等待开始***
exec:b(等待时间= 3秒)
发送:b
完成:b
exec:a(等待时间= 5秒)
发送:
exec:c(等待时间= 5秒)
发送:c
完成:a
完成:c
***完成***时间= 5.005712秒
おまけ:直列で実行してみる
上はースの9行目をfalse
に変更すると,直列実行になります。结果は以下の通り。実行时间は5 + 3 + 5 = 13秒となっていますね。
$运行main.go
***开始通话***
致电:
exec:a(等待时间= 5秒)
发送:
致电:b
exec:b(等待时间= 3秒)
发送:b
致电:c
exec:c(等待时间= 5秒)
发送:c
***等待开始***
完成:a
完成:b
完成:c
***完成***时间= 13.004812秒