.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();
        }
    }
}
相關文章
相關標籤/搜索