信号量的使用 ManualResetEvent
程序员文章站
2022-05-06 21:59:17
线程的等待时可以用这个,不论是线程池还是线程都可以用这个做等待。 当然也可以用循环待等的执行的方式进行线程待等 ......
线程的等待时可以用这个,不论是线程池还是线程都可以用这个做等待。
manualresetevent md=new manualresetevent(false);//这个false 设置线程等待, true 允许线程不待等 iasyncresult result= new action<string>((t) => { console.writeline(t); mre.set();//允许线程不用继续等待,可以执行下去 }).begininvoke("你好",null,null); mre.waitone();//主线程被卡在这里,等待信号量变成true(mre.set()这个方法后就可变为true不用等待) console.writeline("你吃饭了么!"); mre.reset();//重新设为线程等待 iasyncresult result01= new action<string>((t) => { console.writeline(t); mre.set();//设置线程不用继续等待,可以执行下去 }).begininvoke("还没吃",null,null); mre.waitone();//又被阻塞了 console.writeline("一起吃饭吧!"); //输出结果 你好 你吃饭了么! 还没吃 一起吃饭吧! //线程池中的使用 mre.reset(); threadpool.queueuserworkitem((t) => { console.writeline("我是从线程池中走出的线程!"); mre.set(); }); mre.waitone();
当然也可以用循环待等的执行的方式进行线程待等
while (!result.iscompleted) { thread.sleep(500); console.writeline("我在等你回复!"); } console.writeline("我吃了!");
推荐阅读
-
【原创】MVC项目中使用JQuery的upladify图片上传插件相关问题的解决方案
-
Oracle中函数的使用
-
ajax返回的json内容进行排序使用sort()方法实现
-
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect: hy000/1040:
-
android中使用android-gif-drawable实现解析gif图片的每帧图片
-
PHP使用静态方法的几个注意事项,php静态_PHP教程
-
php使用for语句输出三角形的方法_PHP
-
详解Python中的序列化与反序列化的使用
-
php中的curl使用入门教程和常见用法实例_PHP教程
-
MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)_MySQL