マルチスレッドプログラミングをはじめとする並行処理のソフトウェアを、正しく設計・実装することの難しさを実感されている開発者は少なくありません。 その難しさには、大きく二つの要因があると考えられます。 一つは、言語機能やライブラリのサポートが十分でないことによる困難さ、もう一つは、スレッド間のインタリーブ(処理の並行的な交錯)によって生じる「状態爆発」の問題です。
本講演では、まずこうした並行プログラミング固有の難しさに焦点を当て、具体的な課題とその背景を解説します。 そのうえで、プログラミング言語Rustにおける並行プログラミングの実践について紹介します。
Rustは、コンパイル時の検査によって、C/C++などでよく見られる多くの並行バグを未然に防ぐことが可能な設計になっています。 これにより、従来よりも安全かつ堅牢な並行処理の実装が実現できます。 ただし、Rustといえども万能ではありません。 並行処理そのものが本質的に持つ複雑さに起因するバグについては、設計段階や実装時に引き続き注意が必要です。 本講演では、Rustが提供する利点とその限界について解説します。