マルチスレッドはなぜ危険ですか？


マルチスレッドとは、簡単に言えばプログラムを処理するものを増やすことです。しかし、そのマルチスレッドが危険と聞いたことがあります。

マルチスレッドが何故危険なのでしょうか。




危険というのは、正しく理解して使わないと、計算結果が間違ったり予期しないエラーが発生する事があるという事を注意喚起だと思います。

ここに数字を＋１ する 関数 add() と 数字を -1 する sub() 関数があるとします。

順番に add() を 100回 実行し sub() を 100回 実行すると 元の数字に戻りますが

マルチスレッドで add() 100回 と sub() 100回を マルチスレッドで並列して動作させると  
違う値になる可能性があります。

[code]

    int i = 5;
    
    void add() {
     i = i + 1;
    }
    void sub() {
     i = i - 1;
    }
    
[/code]

こんな なんでもない処理でも、マルチスレッドでは動作させることができないのです。

危険だと思いませんか？

だからある程度プログラムがちゃんとできるようになるまでは、マルチスレッドは  
避けておいた方が良いですよ・・と親切心から「危険」と言っているのだと思います。




危険というのは、正しく理解して使わないと、計算結果が間違ったり予期しないエラーが発生する事があるという事を注意喚起だと思います。

ここに数字を＋１ する 関数 add() と 数字を -1 する sub() 関数があるとします。

順番に add() を 100回 実行し sub() を 100回 実行すると 元の数字に戻りますが

マルチスレッドで add() 100回 と sub() 100回を マルチスレッドで並列して動作させると  
違う値になる可能性があります。

[code]

    int i = 5;
    
    void add() {
     i = i + 1;
    }
    void sub() {
     i = i - 1;
    }
    
[/code]

こんな なんでもない処理でも、マルチスレッドでは動作させることができないのです。

危険だと思いませんか？

だからある程度プログラムがちゃんとできるようになるまでは、マルチスレッドは  
避けておいた方が良いですよ・・と親切心から「危険」と言っているのだと思います。

