当前位置:编程学习 > C#/ASP.NET >>

多线程控制问题?帮忙解释一下这句话什么意思。。。

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[0] = m;
是什么意思? --------------------编程问答-------------------- 创建一个互斥变量数组mm,然后赋值第一个数组元素为m --------------------编程问答--------------------
引用 1 楼 ndscfaineant 的回复:
创建一个互斥变量数组mm,然后赋值第一个数组元素为m


老大,如果我要是加入第三个线程t3的话,那这句话要改变吗?Mutex[] mm = new Mutex[1];
            mm[0] = m; --------------------编程问答-------------------- Thread.Sleep(2000)  ?

如果你的这个代码是教你Sleep概念的,那么无可厚非。如果是教你多线程编程设计的,那么完全不够格。你想,无端地阻塞2秒钟,要么是过分奢侈,要么是过分轻率,总之凭什么就确认“2秒钟”这个时间呢?

不管你看得什么书,翻过去或者撕掉吧。看其他内容。 --------------------编程问答--------------------
引用楼主 exia519 的回复:
请问其中的
C# code
Mutex[] mm = new Mutex[1];
            mm[0] = m;

是什么意思?

后边的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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,