首页 > 代码库 > .net网络编程 1.多线程

.net网络编程 1.多线程

一 前言

1.为什么网络编程要用到多线程?

     在网络编程中经常会遇到网络阻塞或者网络等待等情况,处理这些情况就会等待很长时间,如可不加多线程处理就会出现执行时间过长,容易出现错误,反应迟钝等等状况,使用多线程后就会大大提高程序的健壮性和伸缩新性能。

2.进程和线程的区别

  一个程序至少有一个进程,形象点说,你开QQ就是打开了一个进程,但是你还要同时和到几个人聊天,打开好几个聊天窗口,每个聊天窗口就是一个线程,(所以同一进程可以划分为若干个线程,每个线程都有自己的寄存器等等,但是代码区是共享的)

 

二 多线程基础

     在学习多线程寄基础前,先给大家一个基础的宏观的概念,在这部分分为8个部分:

    1.启动线程   2.终止线程  3.合并线程  4.线程休眠  5.线程优先级   6.同步   7.线程池应用

    线程的应用用到了Thread类   他的主要方法有:

    1.Abort         终止线程

    2.Interrupt   中断线程

  3.join            阻塞调用线程,直到某个线程终止时为止

  4.Sleep     睡眠

 

先来上的简单的例子:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApplication3{    class Program    {        static void Main(string[] args)        {            Thread thread = new Thread(new ThreadStart(() => {                while (true)                {                    Thread.Sleep(100);                    Console.WriteLine("111");                }            }));            thread.Start();    //启动线程            //thread.Interrupt();  //中断线程  会抛出异常            //thread.Abort();      //终止线程              Thread.Sleep(2000);  //主线阻塞2s            thread.Suspend();   //线程挂起                        Thread thread2 = new Thread(new ThreadStart(() =>            {                //thread.Start();   //这里有异常 [线程正在运行或被终止;它无法重新启动。]                //为什么这里会报错呢?  如果想开始重新启动一个现有的进程 只能将之前的挂起 然后继续执行                //或者重新New一个thread对象                thread.Resume();    //唤醒挂起的线程                while (true)                {                    Thread.Sleep(100);                    Console.WriteLine("222");                }            }));            thread2.Start();    //启动线程2            Console.ReadLine();        }    }}

  

 

 

 

 

 

 

 

 

 

 

 

.net网络编程 1.多线程