Skip to Content
Go言語による並行処理
book

Go言語による並行処理

by Katherine Cox-Buday, 山口 能迪
October 2018
Beginner to intermediate
256 pages
3h 35m
Japanese
O'Reilly Japan, Inc.
Content preview from Go言語による並行処理

4章Goでの並行処理パターン

Goの並行処理に関するプリミティブの基礎を紹介し、それらを正しく使う方法について議論してきました。この章では、これらのプリミティブの組み合わせ、システムをスケーラブルで保守可能に保つパターンにする方法について深く掘り下げていきます。

しかしながら、その前にこの章で紹介するいくつかのパターンの形式について触れておく必要があります。多くの例で、空インターフェース型(interface{})を引き回しているチャネルを使っています。Goで空インターフェース型を使うことに関しては議論の余地があります。しかしながら、ここで空のインターフェース型を用いているのにはいくつかの理由があります。1つめは残りのページ数で簡潔に例を書くためです。2つめはある状況においてパターンが何を実現しようとしているかがわかりやすくなるからです。2つめに関しては4.6 パイプラインの節でより直接的にお話します。

反論したいことがたくさんあるかもしれませんが、Goのジェネレーターを使っていつでもこうしたコードを生成することができますし、必要な型を使ったパターンを生成できます†1

[†1] 訳註:go generateのことです。go generateについて、詳しくは補遺Bを参照してください。

そういうわけで、早速Goでの並行処理のパターンをいくつか学んでいきましょう!

4.1 拘束

並行なコードを扱うときに、安全な操作をするためにはいくつかの異なる方法が考えられます。これまでにそのうちの2つについて見てきました。

  • メモリを共有するための同期のプリミティブ(例:sync.Mutex
  • 通信による同期(例: チャネル)

しかしながら、複数の並行プロセス内で暗黙的に安全な方法が他にもいくつかあります。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

プログラミングC# 第8版

プログラミングC# 第8版

Ian Griffiths, 木下 哲也, 鈴木 幸敏
Javaパフォーマンス

Javaパフォーマンス

Scott Oaks, Acroquest Technology株式会社, 寺田 佳央, 牧野 聡
PythonによるWebスクレイピング 第2版

PythonによるWebスクレイピング 第2版

Ryan Mitchell, 黒川 利明, 嶋田 健志
UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

Jon Yablonski, 相島 雅樹, 磯谷 拓也, 反中 望, 松村 草也

Publisher Resources

ISBN: 9784873118468Other