デバッグ中の発見 とあるマルチスレッドプログラムをPythonで書いていた際に遭遇した誤使用です。C/C++等の言語を使った場合には起こらない仕様なので、知っておくと役立つ時がくるはずです。これはPythonだけでなく、Rubyでも同様のことが起こるので、Rubyistさんも是非気をつけていただければと思います。 @ahaha_traderさんのご指摘により、C/C++でも同様のことが発生することを教えていただきました・・・。不勉強をお詫び申し上げます。 このブログを見ているような方々だとバグが生じる実際のコードと、結果をまずお見せしたほうが良いと思うので、サンプル用に作ったコードがこちらです。 バグが生じるソースコード import Queue import threading class MultiThreadIncrement(object): def __init__(self,
![絶対ダメ! マルチスレッドでの共通変数のインクリメント演算](https://cdn-ak-scissors.b.st-hatena.com/image/square/e251d719e658801c11dcc7d60328404b7e91ff85/height=288;version=1;width=512/https%3A%2F%2Ffx-kirin.com%2Fwp-content%2Fuploads%2F2015%2F02%2F5520210028_7924354323_z.jpg)