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

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());
            }
        }
    }
}

 

猜你喜欢

转载自blog.csdn.net/bruce135lee/article/details/80708500