乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      性能測(cè)試-根據(jù)Loadrunner官方說(shuō)明來(lái)解釋Vu的進(jìn)程與線程區(qū)別 -小測(cè)天下-搜狐博客

       everydayOK 2010-11-02

      性能測(cè)試-根據(jù)Loadrunner官方說(shuō)明來(lái)解釋Vu的進(jìn)程與線程區(qū)別

      分享

      在Loadrunner里面生成Vu的方式有2種,在“Runtime settings”里面有設(shè)置,具體看下圖,如果選擇Run Vuser as a thread表示Vu按照一個(gè)線程生成,如果選擇 Run Vuser as a process,則Vu按照進(jìn)程(非多線程)方式生成,如圖:

      下面我對(duì)上述的話做一個(gè)簡(jiǎn)單的翻譯:

      Loadrunner支持多線程環(huán)境,使用多線程的方法能使每臺(tái)負(fù)載生成器運(yùn)行更多的VU,但是只有支持線程安全的協(xié)議,才能使用LoadrunnerVU并發(fā)方式

      下表列出哪些協(xié)議不能支持線程并發(fā)Sybase-Dblib,Infomix,Tuxedo,and PeopleSoft-Tuxedo

      當(dāng)使用進(jìn)程并發(fā)是,在任務(wù)管理器中有mdrv.exe的進(jìn)程,比如下圖,我以10個(gè)VU用戶并發(fā),就會(huì)在任務(wù)管理器中出現(xiàn)10個(gè)mmdrv進(jìn)程,如下圖:

      如果以多線程方式并發(fā),只會(huì)出現(xiàn)一個(gè)mmdrv進(jìn)程,一個(gè)進(jìn)程可以支持50VU的線程并發(fā),

      Loadrunner的參考幫助還說(shuō)明了,如果采用多線程方式并發(fā),Load Generator將會(huì)比多進(jìn)程支持更多的用戶,具體的一個(gè)VU占用內(nèi)存的取值根據(jù)Loadrunner的版本不同而不同:

      操作系統(tǒng)底層的原理比較復(fù)雜,我知道如果一個(gè)VU從外部訪問(wèn)的話都會(huì)以一個(gè)進(jìn)程的方式請(qǐng)求和分配系統(tǒng)的資源,當(dāng)VU并模擬成了線程的方式,我不知道仿真度上面是否有區(qū)別,還請(qǐng)知道的人多多提出自己的意見(jiàn)。下面附寫baidu中關(guān)于進(jìn)程和線程的區(qū)別:

      解釋一:
       
      線程是一種操作系統(tǒng)對(duì)象,代表著一個(gè)進(jìn)程中要被執(zhí)行的代碼的路徑。每一個(gè)WIN32應(yīng)用程序至少有一個(gè)線程--通常稱為住線程或默認(rèn)線程--但應(yīng)用程序可以自由地創(chuàng)建其他線程來(lái)執(zhí)行其他任務(wù)!

      進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過(guò)程,它對(duì)應(yīng)了從代碼加載、執(zhí)行到執(zhí)行完畢的一個(gè)完整過(guò)程,這個(gè)過(guò)程也是進(jìn)程本身從產(chǎn)生、發(fā)展到消亡的過(guò)程線程是比進(jìn)程更小的執(zhí)行單位。一個(gè)進(jìn)程在其執(zhí)行過(guò)程能夠中,可以產(chǎn)生 多個(gè)線程,形成多條執(zhí)行線索。每條線索,即每個(gè)線程也有它自身的產(chǎn)生、存在和消亡過(guò)程,也是一個(gè)動(dòng)態(tài)的概念。一個(gè)程序應(yīng)該只有一個(gè)進(jìn)程吧,但是可以擁有多個(gè)線程。

      可以說(shuō),一個(gè)執(zhí)文件被運(yùn)行后,就可以稱為是一個(gè)進(jìn)程了。但是進(jìn)程只是存在內(nèi)存中,實(shí)際上他是不會(huì)做任何事情的。這個(gè)時(shí)候,起作用的就是線程了。線程是程序的執(zhí)行者,一個(gè)程序至少有一個(gè)線程,但是在多線程的操作系統(tǒng)中,可以有一個(gè)以上的線程。

       其實(shí)我們可以把線程看成是我們排隊(duì)買肯德雞吃(循環(huán)的排隊(duì),一直排下去,知道我不想買了,退出)。每人都有機(jī)會(huì)到達(dá)隊(duì)伍的最前端去買東西,這個(gè)就好比是線程,都有機(jī)會(huì)被程序執(zhí)行。但是線程真正起作用的時(shí)候,就是我們?cè)陉?duì)伍的最前端買東西到東西買完后,這一段時(shí)間,這是線程真正執(zhí)行的階段。

      解釋二:
      進(jìn)程和線程都是由操作系統(tǒng)所體現(xiàn)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性。
      進(jìn)程和線程的區(qū)別在于:

      簡(jiǎn)而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。另外,進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。線程在執(zhí)行過(guò)程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出 口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。從邏輯角度來(lái)看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒(méi)有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來(lái)實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位. 線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源. 一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行.

       

      關(guān)于進(jìn)程安全
       

      如果你的代碼所在的進(jìn)程中有多個(gè)線程在同時(shí)運(yùn)行,而這些線程可能會(huì)同時(shí)運(yùn)行這段代碼。如果每次運(yùn)行結(jié)果和單線程運(yùn)行的結(jié)果是一樣的,而且其他的變量的值也和預(yù)期的是一樣的,就是線程安全的?;蛘哒f(shuō):一個(gè)類或者程序所提供的接口對(duì)于線程來(lái)說(shuō)是原子操作或者多個(gè)線程之間的切換不會(huì)導(dǎo)致該接口的執(zhí)行結(jié)果存在二義性,也就是說(shuō)我們不用考慮同步的問(wèn)題。線程安全問(wèn)題都是由全局變量及靜態(tài)變量引起的。若每個(gè)線程中對(duì)全局變量、靜態(tài)變量只有讀操作,而無(wú)寫操作,一般來(lái)說(shuō),這個(gè)全局變量是線程安全的;若有多個(gè)線程同時(shí)執(zhí)行寫操作,一般都需要考慮線程同步,否則就可能影響線程安全。

      舉例:

       比如一個(gè) ArrayList 類,在添加一個(gè)元素的時(shí)候,它可能會(huì)有兩步來(lái)完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。

        在單線程運(yùn)行的情況下,如果 Size = 0,添加一個(gè)元素后,此元素在位置 0,而且 Size=1;

        而如果是在多線程情況下,比如有兩個(gè)線程,線程 A 先將元素存放在位置 0。但是此時(shí) CPU 調(diào)度線程A暫停,線程 B 得到運(yùn)行的機(jī)會(huì)。線程B也向此 ArrayList 添加元素,因?yàn)榇藭r(shí) Size 仍然等于 0 (注意哦,我們假設(shè)的是添加一個(gè)元素是要兩個(gè)步驟哦,而線程A僅僅完成了步驟1),所以線程B也將元素存放在位置0。然后線程A和線程B都繼續(xù)運(yùn)行,都增加 Size 的值。

        那好,現(xiàn)在我們來(lái)看看 ArrayList 的情況,元素實(shí)際上只有一個(gè),存放在位置 0,而 Size 卻等于 2。這就是“線程不安全”了。

       

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多