我目前正在尝试解决Dining Philosopher问题,但是遇到了一个问题。我这样宣布我的叉子
public static fixed Monitor forks[5];
但是当我尝试通过它们引用它们时
forks[i].Enter();
我只给出了“等于,GetType,ToString,GetHashCode”的可能性。
有谁知道如何创建监视器数组并锁定每个特定的监视器?
最佳答案
您只需要创建一个对象数组-您就不能创建Monitor
的实例;这是一个静态类。 (我很惊讶您甚至可以声明该数组-尽管也不清楚为什么您决定使用固定大小的缓冲区。我建议坚持使用安全代码。)
所以:
object[] forks = new object[5];
for (int i = 0; i < forks.Length; i++)
{
forks[i] = new object();
}
然后,您可以使用:
Monitor.Enter(forks[x]);
获取索引
x
的监视器。关于c# - C#中的监视器数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19455156/