シンプルな並列プログラムが直感を覆す
2025-01-18
一見シンプルな並列プログラムで、2つのプロセスが変数'n'をそれぞれ10回インクリメントするものが、モデルチェッカーで分析したところ驚くべき結果となりました。直感的には'n'の最終値は10から20の間になるはずです。しかし、プロセスの極端なインターリービングにより'n'は2になりました。この挙動を再現しようとGoプログラムを作成しましたが失敗し、このような極端なインターリービングは実際には稀であることが示唆されました。この例は、並列プログラミングの複雑さと直感では理解できない性質を浮き彫りにしています。
続きを読む