0

私は2つのスレッドを持っています。

最初のものはこの関数を呼び出します

public int doCompute1(obj)
{
    if (obj.state == OK_FOR_COMPUTE1)
    {
      // do something
      obj.state = OK_FOR_COMPUTE2;
    }
}

2番目のスレッドはこの関数を呼び出します

public int doCompute2(obj)
{
    if (obj.state == OK_FOR_COMPUTE2)
    {
      // do something
      obj.state = OK_FOR_COMPUTE1;
    }
}

今のところ、それは完璧に機能しているようです!

私の質問は:それは正しいですか?マルチコアプロセッサで、obj.stateがキャッシュメモリにあり、スレッドによってこの値を変更しても、2番目のスレッドでは表示されない可能性はありますか?

このコードが正しくない場合はどうすればよいですか?

4

1 に答える 1