您的位置:首页 > 编程语言 > C#

浅谈C#中的单线程与多线程问题

2013-06-19 19:34 267 查看
1、单线程与多线程的区别,以及多线程的好处

单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到。

多线程,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发email的多线程软件,由于操作一次需要网络的返回信息 花的时间比较长,而对cpu来说却是空闲的,如果是一个一个顺序执行,那么搜索几千个IP就会花上好久好久。 而如果用多线程就可以在等待期间 加入其他的搜索,然后等待,这样可以提高效率。

2、下面通过举例来实现单线程与多线程之间的内容,大家可以给例子当中看出单线程与多线程之间的区别,这个也看各自的电脑的运行的速度,可能会因各自的电脑的运行的速度有关,因而大家可能会看到不同的线程运行结果

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

//单线程的内容

/*Stopwatch stwatch = new Stopwatch();

stwatch.Start();

PrintNumb();

PrintStr();

stwatch.Stop();

Console.WriteLine(stwatch.Elapsed.TotalMilliseconds);

Console.ReadKey();*/

//Thread 这也许是最复杂的方法,但它提供了对线程的各种灵活控制。首先你必须使用它的构造函数创建一个线程实例,它的参数比较简单,只有一个ThreadStart 委托

//多线程的内容

ThreadStart printnumb = new ThreadStart(PrintNumb);

Thread readnum = new Thread(printnumb);

ThreadStart printstr = new ThreadStart(PrintStr);

Thread readstr = new Thread(printstr);

//接下来我们结合线程的ThreadState属性来了解线程的控制。ThreadState是一个枚举类型,它反映的是线程所处的状态。当一个Thread实例刚创建时,它的

//ThreadState是Unstarted;当此线程被调用Start()启动之后,它的ThreadState是 Running;

Stopwatch star = new Stopwatch();

star.Start();

readnum.Start();

readstr.Start();

while (true)

{

if (readstr.ThreadState == System.Threading.ThreadState.Stopped && readnum.ThreadState == System.Threading.ThreadState.Stopped)

{

star.Stop();

Console.WriteLine(star.Elapsed.TotalMilliseconds);

break;

}

}

Console.ReadKey();

}

public static void PrintNumb()

{

for (int i = 0; i < 1000; i++)

{

Console.WriteLine(i);

}

}

public static void PrintStr()

{

for (int i = 0; i < 1000; i++)

{

Console.WriteLine("输出的是" + i.ToString());

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐