图像此代码:
你有 2 个数组,你需要同时锁定它们(出于任何原因 - 你只需要保持锁定它们,因为它们以某种方式相互依赖) - 你可以嵌套锁
lock (array1)
{
lock (array2)
{
... do your code
}
}
但这可能会导致死锁,以防您代码的其他部分中的某人会这样做
lock (array2)
{
lock (array1)
{
... do your code
}
}
并且数组 1 被锁定 - 执行上下文切换 - 然后数组 2 被第二个线程锁定。
有没有办法原子地锁定它们?如
lock_array(array1, array2)
{
....
}
我知道我可以创建一些额外的“锁定对象”并锁定它,而不是在我的代码中到处都是两个数组,但这对我来说似乎不正确......