试试Golang! Goroutineをさわってみた!

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秒