线程初学

       当程序中有一项子任务(比如一个子函数功能)需要处理比较长的时间的时候,如果按照正常的顺序执行,则需要等待这个子函数执行完毕,然后再接着顺序执行。这样在这个子函数的执行时间里,主函数都不能做其他事情,一直等待。如果这个主函数是一个windows窗体,这就会造成这个主窗体卡死,因为当我们点击窗体上的按钮时程序并不能及时响应,要等待这个子函数执行完毕。

       初学的代码:

代码
class Program
{
static void Main(string[] args)
{
Console.WriteLine(
"我是主函数的线程,现在开始");
Thread firstThread
= new Thread(new ThreadStart(ThreadProc));
firstThread.Start();
for (int i = 0; i < 4; i++)
{
Console.WriteLine(
"主函数线程: 主函数做某些事情");
Thread.Sleep(
0);
}
Console.WriteLine(
"接下来等另外一个函数的线程执行完毕在继续主函数的下一步");
//firstThread.Join();
Console.WriteLine("主函数线程结束");
//将当前线程设置进入睡眠状态
//Thread.Sleep(10000);
}

public static void ThreadProc()
{
for (int i = 0; i < 30; i++)
{
Console.WriteLine(
"我是主函数外一个的线程: {0}", i);
// Yield the rest of the time slice.
Thread.Sleep(0);
}
}
}
当我们启用另外一个线程后,cpu会自动将该线程加入到当前程序的执行轮状序列中。cpu会制定去调度。Thread.Join()函数的功能是将当前线程阻塞,等此程序的进程中的其他线程停止后再来执行该线程。
posted @ 2010-12-30 17:00  雁北飞  阅读(149)  评论(0编辑  收藏  举报