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

C#线程执行过程

classThreadTest { booldone; staticvoidMain() { ThreadTest tt = newThreadTest(); // Create a common instance newThread (tt.Go).Start(); tt.Go(); } // Note that Go is now an instance method voidGo() { if(!done) { done = true; Console.WriteLine ("Done"); } } } 为什么这个程序的执行结果是输出一个“done”,怎么执行的,我是新手,请大师指教
答案:newThread (tt.Go).Start(); 
tt.Go();
Go方法会在两个线程中同时执行,但其实还是有先后顺序的,有两种情况:
(1)当一个线程执行了 done=true时,若第二个线程还在执行if(!done)显然它就不会再执行if里面的语句了!
(2)还有可能第一个线程执行完了if(!done)但是还没有执行done=true,这时第二线程执行if(!done)则它可以继续if里面的语句,这个时候就会 输出两行 Done了,不过这种几率比较小

你可以在 if(!done) { Thread.Sleep(2000); done = true; Console.WriteLine("Done");}
这样基本上每次都是 第(2)中情况。
其他:贴图吧,完全没看懂你写的嘛…… 不用解释了!直接打开下面的地址!

 

地【ωωω.8b9c.cōm】

址【ωωω.8b9c.cōm】







苎嘶镅喂pdmg 

上一个:vs2010中的windows forms 添加一个menustrip 然后给菜单命名为“关于”,请问如何才能点击弹出一个对话框
下一个:asp.net中利用textbox显示数据库中某个字段值(vb)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,