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

问题描述

staticMutexm;staticThreadt1;staticThreadt2;staticvoidMain(string[]args){m=newMutex(true);//创建互斥对象t1=newThread(newThreadStart(p1));t2=newThread(newThreadStart(p2));t1.Start();t2.Start();Console.WriteLine("主线程开始运行");m.ReleaseMutex();//释放互斥对象Thread.Sleep(2000);m.WaitOne();//等待p2释放对象Console.WriteLine("最后退出");Console.ReadKey();}staticvoidp1(){m.WaitOne();//等待主线程,释放互斥对象Console.WriteLine("这里是p1");m.ReleaseMutex();//释放互斥对象}staticvoidp2(){Mutex[]mm=newMutex[1];mm[0]=m;Mutex.WaitAll(mm);//等待p1,释放互斥对象Console.WriteLine("这里是p2");m.ReleaseMutex();//释放互斥对象}

请问其中的Mutex[]mm=newMutex[1];mm[0]=m;

是什么意思?

解决方案

解决方案二:
创建一个互斥变量数组mm,然后赋值第一个数组元素为m
解决方案三:
引用1楼ndscfaineant的回复:

创建一个互斥变量数组mm,然后赋值第一个数组元素为m

老大,如果我要是加入第三个线程t3的话,那这句话要改变吗?Mutex[]mm=newMutex[1];mm[0]=m;
解决方案四:
Thread.Sleep(2000)?如果你的这个代码是教你Sleep概念的,那么无可厚非。如果是教你多线程编程设计的,那么完全不够格。你想,无端地阻塞2秒钟,要么是过分奢侈,要么是过分轻率,总之凭什么就确认“2秒钟”这个时间呢?不管你看得什么书,翻过去或者撕掉吧。看其他内容。
解决方案五:
引用楼主exia519的回复:

请问其中的C#codeMutex[]mm=newMutex[1];mm[0]=m;是什么意思?

后边的WaitAll方法必须传一个数组做参数,于是只有一个m的情况下,它创建了一个只有一个单元的数组,然后让数组mm的第一个单元引用m。
解决方案六:
可以参考我在vb.net板块回复的一个问题:

时间: 2025-01-25 14:58:16

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

select-mysql 帮忙解释一下这句话什么意思

问题描述 mysql 帮忙解释一下这句话什么意思 我有个表格 类似如下图,它主要来自于前段的更新,每一次更新都会增加一条记录,比如,我今天对lead-1进行了更新,那就会新增一条lead-1的状态 项目编号 预计成交日期 状态更新日期 项目状态 lead-1 2016-6-4 2016-3-1 跟踪 lead-1 2016-6-5 2016-3-2 谈判中 lead-1 2016-7-5 2016-3-3 审核中 lead-2 2016-3-5 2016-3-1 跟踪 lead-2 2016-4

web开发-谁能帮我解释一下这句话什么意思?

问题描述 谁能帮我解释一下这句话什么意思? <A href=""news?action=show&newsId=104""> </A><A href>是个超链接标签 news?action=show&newsId=104 这句话是什么意思? 解决方案 ?后面是url参数,&是各个参数的分隔.一个action参数,值是show一个是newsId参数,值是104 其他详细的看看url参数传递基础吧 解决方案二:

c++新手 明天交作业了 求大神解释下这句话

问题描述 c++新手 明天交作业了 求大神解释下这句话 Retangle::Retangle(float w,float h):width(w),height(h) { } 解决方案 一个矩形类,定义了它的一个包含两个参数的构造函数,分别对宽度width和高度heigh字段初始化,用参数w h 解决方案二: 这个自己翻一下C++的书吧,这么简单的问题就不要伸手了... 解决方案三: 使用初始化列表初始化Retangle的成员width和height.使用初始化列表的原因有: 1. 效率高: 2.

struct-求大侠帮忙解释如下C程序每句含义,谢谢

问题描述 求大侠帮忙解释如下C程序每句含义,谢谢 #include ""stdio.h""#includestruct w{ char low; char high;};union u{ struct w byte; int word;}uu;main(){ uu.word=0x1234; printf(""Word value:%04xn""uu.word); printf(""High value:%0

javascript滑动图片代码,求详细解释每一句的作用,急用,请帮忙

问题描述 javascript滑动图片代码,求详细解释每一句的作用,急用,请帮忙 /**///选择器 function $a(id,tag){var re=(id&&typeof id!="string")?id:document.getElementById(id);if(!tag){return re;}else{return re.getElementsByTagName(tag);}} //焦点滚动图 点击移动 function movec() { var o=

jvm-哪位大神解释下[volatile不能保证原子性,也就不能保证线程安全]这句话

问题描述 哪位大神解释下[volatile不能保证原子性,也就不能保证线程安全]这句话 哪位大神解释下[volatile不能保证原子性,也就不能保证线程安全]这句话 哪位大神解释下[volatile不能保证原子性,也就不能保证线程安全]这句话 哪位大神解释下[volatile不能保证原子性,也就不能保证线程安全]这句话 解决方案 简单来说,volatile在多cpu环境下不能保证其它cpu的缓存同步刷新,因此无法保证原子性. 解决方案二: 还是以最常用的i++来说吧,包含3个步骤 1,从内存读取

c语言-C语言题程序第二个输出结果是124还是125呢?求大侠帮忙解释

问题描述 C语言题程序第二个输出结果是124还是125呢?求大侠帮忙解释 #includeint change(int *data){ return (*data)++;}main(){ int data=123; change(&data); printf(""%ddata); data=change(&data); printf(""%d""data); printf(""n"");}V

c-十六进制转换成十进制,大神们帮忙解释一下while循环中的if语句意思

问题描述 十六进制转换成十进制,大神们帮忙解释一下while循环中的if语句意思 #include #include #include int main() { char a[9]; gets(a); int len,i=0; long long sum=0; double x; len=strlen(a); while(len) { if(a[len-1]>='A'&&a[len-1]<='F') x=(a[len-1]-'7')*pow(16,i++); else x=x=

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S