多线程应用场合?
我看资料说是以下情况可能会用到多线程
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