補遺A 

読者のみなさんは並行処理のコードを書くという旅に出ることに決めたので、あなたがプログラムを書いたり、それが正しいかどうかを解析したりするための道具、そしてあなたのプログラムの中で何が起きているかを理解する補助となる便利な参照先がいくつか必要になるでしょう。幸いなことに、GoのエコシステムにはGoチームとコミュニティ双方から潤沢にツールが提供されています!補遺ではそれらのツールの中からいくつかを取り上げて、それらが開発の前段階、最中、後段階でどのように助けになるかを紹介していきます。この本は並行処理に焦点を当てているので、ここでは並行処理のコードを解析するときの助けになる話題にのみ限定して話を進めます。また、ゴルーチンがパニックになったときに何が起きるかを簡単に見ていきます。パニックはそれほど頻繁には起きませんが、それでも初めて見るときには出力内容が少々読みづらいかもしれません。

A.1 ゴルーチンのエラーの解剖

よくあることです。遅かれ早かれ、あなたのプログラムはパニックを起こします。運が良ければ、そのとき人間もコンピューターも誰も傷つかないでしょう。そしてそのときは最悪でもスタックトレースの最後にある悪い結果を眺めるだけで済むでしょう。

Go 1.6以前では、ゴルーチンがパニックになると、ランタイムは現在実行中のゴルーチンのすべてのスタックトレースを表示していました。時としてこのことが、何が起きたか判定するのを難しく(あるいは少なくとも時間がかかるように)していました。本書の執筆時点、Go 1.6以降ではパニックしたゴルーチンのスタックトレースだけを表示するようになり、表示が非常に簡潔になりました。

たとえば、このサンプルプログラムを実行した場合、

package ...

Get Go言語による並行処理 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.