C#中的以下代码块是否会引入竞争条件:
void AssignValue(string VariableName, int VariableValue)
{
// Get the non-public instance variable (field)
FieldInfo field = GetType().GetField(VariableName, BindingFlags.NonPublic | BindingFlags.Instance);
// Set the variable's value for this instance of the type
field.SetValue(this, VariableValue);
}
答案 0 :(得分:7)
是的,有竞争条件。
fileText = fileText.Replace(guidObj.Value.OldGuid, guidObj.Value.NewGuid);
如果两个单独的线程开始此操作,它们都将从原始字符串开始。无论哪一个先完成,都会写入fileText
变量。当第二个完成时,它也将写入同一个变量。但由于两个线程都在原始字符串上运行,当第二个线程完成时,第一个线程所做的更改将被覆盖。