多线程控制问题?帮忙解释一下这句话什么意思。。。
static Mutex m;
static Thread t1;
static Thread t2;
static void Main(string[] args)
{
m = new Mutex(true);//创建互斥对象
t1 = new Thread(new ThreadStart(p1));
t2 = new Thread(new ThreadStart(p2));
t1.Start();
t2.Start();
Console.WriteLine("主线程开始运行");
m.ReleaseMutex();//释放互斥对象
Thread.Sleep(2000);
m.WaitOne();//等待p2释放对象
Console.WriteLine("最后退出");
Console.ReadKey();
}
static void p1()
{
m.WaitOne();//等待主线程,释放互斥对象
Console.WriteLine("这里是p1");
m.ReleaseMutex();//释放互斥对象
}
static void p2()
{
Mutex[] mm = new Mutex[1];
mm[0] = m;
Mutex.WaitAll(mm);//等待p1,释放互斥对象
Console.WriteLine("这里是p2");
m.ReleaseMutex();//释放互斥对象
}
请问其中的
Mutex[] mm = new Mutex[1];是什么意思? --------------------编程问答-------------------- 创建一个互斥变量数组mm,然后赋值第一个数组元素为m --------------------编程问答--------------------
mm[0] = m;
老大,如果我要是加入第三个线程t3的话,那这句话要改变吗?Mutex[] mm = new Mutex[1];
mm[0] = m; --------------------编程问答-------------------- Thread.Sleep(2000) ?
如果你的这个代码是教你Sleep概念的,那么无可厚非。如果是教你多线程编程设计的,那么完全不够格。你想,无端地阻塞2秒钟,要么是过分奢侈,要么是过分轻率,总之凭什么就确认“2秒钟”这个时间呢?
不管你看得什么书,翻过去或者撕掉吧。看其他内容。 --------------------编程问答--------------------
后边的WaitAll方法必须传一个数组做参数,于是只有一个m的情况下,它创建了一个只有一个单元的数组,然后让数组mm的第一个单元引用m。 --------------------编程问答-------------------- 可以参考我在vb.net板块回复的一个问题:http://topic.csdn.net/u/20120118/22/62869c4a-2f2a-4183-8495-70b5dfd42d0c.html?seed=1089070661&r=77349508#r_77349508
补充:.NET技术 , C#