【发布时间】:2013-05-21 07:57:52
【问题描述】:
将此代码映像:
你有 2 个数组,你需要同时锁定它们(出于任何原因 - 你只需要保持锁定它们,因为它们以某种方式相互依赖) - 你可以嵌套锁
lock (array1)
{
lock (array2)
{
... do your code
}
}
但这可能会导致死锁,以防你代码的其他部分的人会这样做
lock (array2)
{
lock (array1)
{
... do your code
}
}
数组 1 被锁定 - 执行上下文切换 - 然后数组 2 被第二个线程锁定。
有没有办法自动锁定它们?比如
lock_array(array1, array2)
{
....
}
我知道我可以只创建一些额外的“锁定对象”并锁定它,而不是在我的代码中到处都是两个数组,但这对我来说似乎不正确......
【问题讨论】:
-
创建一个额外的锁对象是正确的。
-
使用将锁定两个项目的单个锁定对象是要走的路。
标签: c#