首页 > 代码库 > 异步和多线程的区别

异步和多线程的区别

多线程会有一个工作线程,占用更多的CPU。

异步将使用DMA模式的IO操作

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            var p = new Program();            var url = "http://bj.58.com/";            p.Asynchronous(url);            p.MultiThread(url);            Console.ReadKey();        }        void Asynchronous(string url)        {            var request = HttpWebRequest.Create(url);            request.BeginGetResponse((IAsyncResult ar) => {                var request_inner = ar.AsyncState as WebRequest;                var response = request.EndGetResponse(ar);                read(response, "Asynchronous");            }, request);        }        void MultiThread(string url)        {            var t = new Thread(() =>            {                var request = HttpWebRequest.Create(url);                var response = request.GetResponse();                read(response, "MultiThread");            });            t.Start();        }        private static void read(WebResponse response, string funcname)        {            var stream = response.GetResponseStream();            using (var reader = new StreamReader(stream))            {                Console.WriteLine("{0} {1}", funcname, reader.ReadToEnd().Length);            }        }    }}

 

异步和多线程的区别