.net网络编程 1.多线程

一 前言编程

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

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

2.进程和线程的区别性能

  一个程序至少有一个进程,形象点说,你开QQ就是打开了一个进程,可是你还要同时和到几我的聊天,打开好几个聊天窗口,每一个聊天窗口就是一个线程,(因此同一进程能够划分为若干个线程,每一个线程都有本身的寄存器等等,可是代码区是共享的)学习

 

二 多线程基础spa

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

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

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

    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();
        }
    }
}
相关文章
相关标签/搜索