マルチスレッドプログラミングは直感とかなり異なる挙動をすることが多く、非常に困難なプログラミングであることが知られている。不具合も発見しにくく、高負荷になった時にのみ再現したり極めて稀な状態になった時にのみ再現したり等、解決が困難なだけでなく不具合の発見や再現すら困難であることもある。不具合を発見してもその現象は不可解であることが多く、現象から直感で原因を見つける事は難しい。 つまり、マルチスレッドプログラミングはシングルスレッドプログラミングに比べてはるかに困難で厄介者なのだ。 この記事に、マルチスレッドプログラミングの困難さを少しでも回避するためのルールやお作法を載せておくことにする。 よくある不具合 ・デッドロック マルチスレッドプログラミングで最もポピュラーな不具合。 二人以上のユーザー(≒スレッド)がお互いのリソースのロックが解放されるのを待ち続けること。 一般的にはロックを取る