private static void Timer_ChangeBoolValue(object sender, ElapsedEventArgs e)
{
lock (_lock)
{
if (i % 2 == 0)
{
Test.isCallBox = false;
}
else
{
Test.isCallBox = true;
}
i++;
Test.PrintText();
}
}
与
private static void Timer_ChangeBoolValue(object sender, ElapsedEventArgs e)
{
if (i % 2 == 0)
{
Test.isCallBox = false;
}
else
{
Test.isCallBox = true;
}
i++;
lock (_lock)
{
Test.PrintText();
}
}
锁的效果是不一样的, 下面的仍会改变 i 的值
探讨了在C#中使用定时器与锁机制时,不同的锁位置如何影响线程安全性和变量i的值更新。通过两个代码示例对比,说明了在执行布尔值切换和文本打印操作时,锁的位置对于防止竞态条件的重要性。
10万+

被折叠的 条评论
为什么被折叠?



