Public void example(int a,int b)
{
int d=a;
int w, c;
ThreadPool.GetMinThreads(out w, out c);
ThreadPool.SetMinThreads(100, c);
ThreadPool.QueueUserWorkItem(new WaitCallback(method), d);
}
Public void method(object d)
{
console.Writeline(d);
}
问题:当一个线程进入 example() 时,它自己的 a 值被分配给 c。当线程到达语句ThreadPool.QueueUserWorkItem(new WaitCallback(method), d)
时,一个新线程进入 example(),并修改 c 的值。因此第一个线程也将修改后的 d 值发送到method()
。结果,两个线程都打印相同的值d
。
要求:我希望每个线程都持有自己的 d 值,进入的第二个线程 method()
不应该修改第一个线程的 d 值。我知道'lock(obj)'可以是一个选项。建议我一些在这种情况下锁定的好方法以及我可以达到我要求的其他方法。注意:考虑线程流高。