假设我有两种方法-
getCurrentValue(int valueID)
updateValues(int changedComponentID)
这两个方法由不同的线程在同一个对象上独立调用。
getCurrentValue()
只需对当前 valueID 进行数据库查找。
” Values
” 改变如果他们相应的components
改变。该updateValues()
方法更新那些依赖于刚刚更改的组件的值,即changedComponentID
. 这是一个数据库操作,需要时间。
虽然此更新操作正在进行,但我不想通过从数据库中进行查找来返回过时的值,但我想等到更新方法完成。同时,我不希望两个更新操作同时发生,或者在读取进行时发生更新。
所以,我正在考虑这样做 -
[MethodImpl(MethodImplOptions.Synchronized)]
public int getCurrentValue(int valueID)
{
while(updateOperationIsGoingOn)
{
// do nothing
}
readOperationIsGoingOn = true;
value = // read value from DB
readOperationIsGoingOn = false;
return value;
}
[MethodImpl(MethodImplOptions.Synchronized)]
public void updateValues(int componentID)
{
while(readOperationIsGoingOn)
{
// do nothing
}
updateOperationIsGoingOn = true;
// update values in DB
updateOperationIsGoingOn = false;
}
我不确定这是否是正确的做法。有什么建议么?谢谢。