私は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番目のスレッドでは表示されない可能性はありますか?
このコードが正しくない場合はどうすればよいですか?