久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于C#中Thread.Join()的一點理解

 goodwangLib 2013-11-04

      今天是第一次在C#中接觸Thread,自己研究了一下其中Thread.Join()這個方法,,下面談?wù)勛约旱睦斫狻?/p>

 

      Thread.Join()在MSDN中的解釋很模糊:Blocks the calling thread until a thread terminates

有兩個主要問題:1.什么是the calling thread?

                       2.什么是a thread?

 

       首先來看一下有關(guān)的概念: 我們執(zhí)行一個.exe文件實際上就是開啟了一個進程,同時開啟了至少一個線程,,

但是真正干活的是線程,,就好比一個Team有好幾個人,但是真正干活的是人不是Team.

      具體到代碼來說,,以Console Application為例:程序Test.exe從Main函數(shù)開始運行,,實際上是有一個線程

在執(zhí)行Main函數(shù),我們稱作MainThread.假如我們在Main函數(shù)中聲明了一個Thread,稱作NewThread,并且調(diào)用了

NewThread.Start()的方法,,那么 MainThread在處理Main函數(shù)里面的代碼時遇到NewThread.Start()時,,就會

去調(diào)用NewThread.

       基于上面的討論,我們可以得出結(jié)論:在我們剛才的例子中the calling thread就是MainThread,而a thread

指的洽洽就是MainThread調(diào)用的NewThread線程,。

       現(xiàn)在回到MSDN的解釋,,我們可以這么翻譯:當(dāng)NewThread調(diào)用Join方法的時候,MainThread就被停止執(zhí)行,,

直到NewThread線程執(zhí)行完畢,。這樣就好理解了吧O(∩_∩)O哈哈~

 

       好了,前面分析完了,,現(xiàn)在來看測試用例吧:

 

Titleusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Test
{
    class TestThread
    {
        private static void ThreadFuncOne()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(Thread.CurrentThread.Name +"   i =  " + i);
            }
            Console.WriteLine(Thread.CurrentThread.Name + " has finished");
        }

        static void Main(string[] args)
        {
            Thread.CurrentThread.Name = "MainThread";

            Thread newThread = new Thread(new ThreadStart(TestThread.ThreadFuncOne));
            newThread.Name = "NewThread";

            for (int j = 0; j < 20; j++)
            {
                if (j == 10)
                {
                    newThread.Start();
                    newThread.Join();
                }
                else
                {
                    Console.WriteLine(Thread.CurrentThread.Name + "   j =  " + j);
                }
            }
            Console.Read();
        }
    }
}

 下面是測試的結(jié)果:

 


 

結(jié)論:從測試中我們可以很清楚的看到MainThread在NewThread.Join被調(diào)用后被阻塞,,直到NewThread

        執(zhí)行完畢才繼續(xù)執(zhí)行。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多