|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。asp.net|对照|多线程 一段对照典范的多线程进修代码。
1、用到了多线程的同步成绩。
2、用到了多线程的按次成绩。
假如有乐趣的请细心浏览上面的代码。注重个中代码段的按次,思索一下,这些代码的按次可否相互互换,为何?这应当对进修很有匡助的。为了演示,让一切的线程都Sleep了一段工夫。
usingSystem.Net;
usingSystem;
usingSystem.IO;
usingSystem.Text;
usingSystem.Threading;
usingSystem.Diagnostics;
namespaceWebb.Study
{
classTestThread
{
staticMutexm_Mutex=newMutex();
staticThread[]m_testThreads=newThread[10];
staticintm_threadIndex=0;
staticvoidThreadCallBack()
{
TestThread.m_Mutex.WaitOne();
intm_index=m_threadIndex;
TestThread.m_Mutex.ReleaseMutex();
Console.WriteLine("Thread{0}start.",m_index);
for(inti=0;i<=10;i++)
{
TestThread.m_Mutex.WaitOne();
Console.WriteLine("Thread{0}:isrunning.{1}",m_index,i);
TestThread.m_Mutex.ReleaseMutex();
Thread.Sleep(100);
}
Console.WriteLine("Thread{0}end.",m_index);
}
publicstaticvoidMain(String[]args)
{
Console.WriteLine("Mainthreadstart.");
for(inti=0;i<TestThread.m_testThreads.Length;i++)
{
TestThread.m_threadIndex=i;
TestThread.m_testThreads[i]=newThread(newThreadStart(ThreadCallBack));
TestThread.m_testThreads[i].Start();
Thread.Sleep(100);
}
for(inti=0;i<TestThread.m_testThreads.Length;i++)
{
TestThread.m_testThreads[i].Join();
}
Console.WriteLine("Mainthreadexit.");
}
}
}
1、主函数中这两句可否交换?为何?
TestThread.m_testThreads[i].Start();
Thread.Sleep(100);
2、CallBack函数中这两句可否交换?为何?会有甚么分歧的了局?
TestThread.m_Mutex.ReleaseMutex();
Thread.Sleep(100);
3、主函数可否写成如许?为何?会有甚么分歧的了局?
publicstaticvoidMain(String[]args)
{
Console.WriteLine("Mainthreadstart.");
for(inti=0;i<TestThread.m_testThreads.Length;i++)
{
TestThread.m_threadIndex=i;
TestThread.m_testThreads[i]=newThread(newThreadStart(ThreadCallBack));
TestThread.m_testThreads[i].Start();
TestThread.m_testThreads[i].Join();
Thread.Sleep(100);
}
Console.WriteLine("Mainthreadexit.");
}
4、这几句的感化是甚么?那末程序中还存在甚么样的成绩?应当做如何的修正?
TestThread.m_Mutex.WaitOne();
intm_index=m_threadIndex;
TestThread.m_Mutex.ReleaseMutex();
仅做进修会商。
我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:) |
|