スレッドセーフ
マルチスレッドにしても大丈夫だよ
簡単に書くよ
スレッドセーフ(英:thread safe)とは
「マルチスレッドでも(並行処理が発生するようになっていても)大丈夫だよ~」のこと。
もう少し具体的に書くと
「マルチスレッドな環境で、複数のスレッドが同時に実行したり同じデータを扱ったりしても、ぶっ壊れないよ~」のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「マルチスレッド」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
マルチスレッドは「並行処理の発生するプログラム」です。
例えば
1.ご飯を炊く
2.カレーを煮込む
3.お皿に盛る
の3つの処理をやるカレー作成プログラムが あったとしましょう。
「ご飯を炊く」と「カレーを煮込む」を同時にやる作りになっているのがマルチスレッドです。
以上を踏まえて、本題に入ります。
マルチスレッド環境においては、それぞれの処理(スレッド)が独立して動きます。
ただし、それぞれの処理が影響し合わないとは限りません。
例えば、ご飯は土鍋で炊くとします。
そうすると、コンロを使いますよね。
このとき、コンロは一口しかありませんでした。
そうすると、カレーを煮込むコンロが、ありませんよね。
これでは「ご飯を炊く」と「カレーを煮込む」を同時にやれません。
おーまいがっ!です。
このように、マルチスレッド環境では、他のスレッドの影響で、なんかおかしくなる場合があります。
2つ以上のお仕事を同時にやるので、上手く足並みが揃わないと邪魔しあってしまうのです。
それを前提として「そんなことには、ならないよ!そこら辺はちゃんと考えてあるから、並行処理しても問題ないよ!」を意図する用語が「スレッドセーフ」です。
「マルチスレッドでも大丈夫!」を意味します。
例えば「この処理はスレッドセーフになっている」であれば「並行処理されることを考慮してるよ」の意味です。
「スレッドセーフな実装にする」であれば「並行処理されても大丈夫なように作るよ」の意味になります。
一言でまとめるよ
まぁ「スレッドセーフ」って単語が出てきたら「マルチスレッドにしても大丈夫なんだな~」と お考えください。
おまけ
■訳してみるよ
「thread(スレッド)」の意味は「より糸」とか「筋道」とか「脈絡」とかです。
「safe(セーフ)」の意味は「安全な」とか「安心な」とかです。
何となく くっつけると
糸が安全
となります。





