日期:2014-05-17  浏览次数:20777 次

多线程应用场合?
我看资料说是以下情况可能会用到多线程
1.程序需要同时执行两个或多个任务
2.程序要等待某事件的发生,例如用户输入、文件操作、网络操作、搜索等
3.后台程序

大家能否具体举几个例子?(有代码更好理解)

------解决方案--------------------
因为操作系统按照线程调度CPU,所以在多处理器环境下,多线程可以利用处理器并行提高速度。

其余的场合基本如你所说,一个是逻辑上的并发,一个是延迟隐藏(比如网络、IO等等),还有就是防止UI阻塞。
------解决方案--------------------
多线程用于后台操作,可以充分发挥多核CPU的性能。
但多线程不能滥用。
多线程是魔鬼,很多意想不到匪夷所思的bug都会在多线程环境下产生。
所以msdn里每介绍一个对象都会声明它在多线程下的特性。
------解决方案--------------------
比如说程序要提取网页中信息,首先要下载网页地址的源代码,然后分析,那么在下载网页的时候就可能因为网速等各种原因卡住,这时候就应该用多线程,全都边下载边分析


------解决方案--------------------
服务器监听客户端连接时
                    Task.Factory.StartNew((hostinfo) =>
                    {
                        var ipe = hostinfo as IPEndPoint;
                        var listner = new TcpListener(ipe);

                        listner.Start();

                        while (this.flagServer)
                        {
                            if (listner.Pending())
                            {
                                var client = listner.AcceptTcpClient();

                                this.DisplayMessage(string.Format("{0} connecting", client.Client.RemoteEndPoint));

                                var ope = new UserOperation(client);

                                ope.MessageReceived += new EventHandler<UserOperation.MessageEventArgs>(ope_MessageReceived);
              &nbs