日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多进程 VS 多线程

發(fā)布時間:2023/12/9 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多进程 VS 多线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Linux下編程多用多進程編程少用多線程編程。

???????? IBM有個家伙做了個測試,發(fā)現切換線程context的時候,windows比linux快一倍多。進出最快的鎖(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。當然這并不是說linux不好,而且在經過實際編程之后,綜合來看我覺得linux更適合做high performance server,不過在多線程這個具體的領域內,linux還是稍遜windows一點。這應該是情有可原的,畢竟unix家族都是從多進程過來的,而 windows從頭就是多線程的。

如果是UNIX/linux環(huán)境,采用多線程沒必要。

多線程比多進程性能高?誤導!

應該說,多線程比多進程成本低,但性能更低。

在UNIX環(huán)境,多進程調度開銷比多線程調度開銷,沒有顯著區(qū)別,就是說,UNIX進程調度效率是很高的。內存消耗方面,二者只差全局數據區(qū),現在內存都很便宜,服務器內存動輒若干G,根本不是問題。

多進程是立體交通系統,雖然造價高,上坡下坡多耗點油,但是不堵車。

多線程是平面交通系統,造價低,但紅綠燈太多,老堵車。

我們現在都開跑車,油(主頻)有的是,不怕上坡下坡,就怕堵車。

高性能交易服務器中間件,如TUXEDO,都是主張多進程的。實際測試表明,TUXEDO性能和并發(fā)效率是非常高的。TUXEDO是貝爾實驗室的,與UNIX同宗,應該是對UNIX理解最為深刻的,他們的意見應該具有很大的參考意義。

====================================================================================================

多線程的優(yōu)點:

無需跨進程邊界;?
程序邏輯和控制方式簡單;?
所有線程可以直接共享內存和變量等;?
線程方式消耗的總資源比進程方式好;?
多線程缺點:

每個線程與主程序共用地址空間,受限于2GB地址空間;?
線程之間的同步和加鎖控制比較麻煩;?
一個線程的崩潰可能影響到整個程序的穩(wěn)定性;?
到達一定的線程數程度后,即使再增加CPU也無法提高性能,例如Windows Server 2003,大約是1500個左右的線程數就快到極限了(線程堆棧設定為1M),如果設定線程堆棧為2M,還達不到1500個線程總數;?
線程能夠提高的總性能有限,而且線程多了之后,線程本身的調度也是一個麻煩事兒,需要消耗較多的CPU?


多進程優(yōu)點:

每個進程互相獨立,不影響主程序的穩(wěn)定性,子進程崩潰沒關系;
通過增加CPU,就可以容易擴充性能;
可以盡量減少線程加鎖/解鎖的影響,極大提高性能,就算是線程運行的模塊算法效率低也沒關系;
每個子進程都有2GB地址空間和相關資源,總體能夠達到的性能上限非常大
多線程缺點:

邏輯控制復雜,需要和主程序交互;?
需要跨進程邊界,如果有大數據量傳送,就不太好,適合小數據量傳送、密集運算?
多進程調度開銷比較大;?
最好是多進程和多線程結合,即根據實際的需要,每個CPU開啟一個子進程,這個子進程開啟多線程可以為若干同類型的數據進行處理。當然你也可以利用多線程+多CPU+輪詢方式來解決問題……

方法和手段是多樣的,關鍵是自己看起來實現方便有能夠滿足要求,代價也合適。

---------------------------------------------------------

進程的優(yōu)點:

1)順序程序的特點:具有封閉性和可再現性;

2)程序的并發(fā)執(zhí)行和資源共享。多道程序設計出現后,實現了程序的并發(fā)執(zhí)行和資源共享,提高了系統的效率和系統的資源利用率。
進程的缺點:

操作系統調度切換多個線程要比切換調度進程在速度上快的多。而且進程間內存無法共享,通訊也比較麻煩。

線程之間由于共享進程內存空間,所以交換數據非常方便;在創(chuàng)建或撤消進程時,由于系統都要為之分配和回收資源,導致系統的開銷明顯大于創(chuàng)建或撤消線程時的開銷。
? ?

線程的優(yōu)點:

1)它是一種非常"節(jié)儉"的多任務操作方式。在Linux系統下,啟動一個新的進程必須分配給它獨立的地址空間,建立眾多的數據表來維護它的代碼段、堆棧段和數據段,這是一種"昂貴"的多任務工作方式。而運行于一個進程中的多個線程,它們彼此之間使用相同的地址空間,共享大部分數據,啟動一個線程所花費的空間遠遠小于啟動一個進程所花費的空間,而且,線程間彼此切換所需的時間也遠遠小于進程間切換所需要的時間。當然,在具體的系統上,這個數據可能會有較大的區(qū)別;

2)線程間方便的通信機制,由于同一進程下的線程之間共享數據空間,所以一個線程的數據可以直接為其它線程所用,這不僅快捷,而且方便;

3)使多CPU系統更加有效。操作系統會保證當線程數不大于CPU數目時,不同的線程運行于不同的CPU上;

4)改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。
線程的缺點:
1.調度時, 要保存線程狀態(tài),頻繁調度, 需要占用大量的機時;

2.程序設計上容易出錯(線程同步問題)。


有人為二者對比專門做過實驗,特此轉載過來

在Unix上編程采用多線程還是多進程的爭執(zhí)由來已久,這種爭執(zhí)最常見到在C/S通訊中服務端并發(fā)技術 的選型上,比如WEB服務器技術中,Apache是采用多進程的(perfork模式,每客戶連接對應一個進程,每進程中只存在唯一一個執(zhí)行線程),?Java的Web容器Tomcat、Websphere等都是多線程的(每客戶連接對應一個線程,所有線程都在一個進程中)。
從Unix發(fā)展歷史看,伴隨著Unix的誕生進程就出現了,而線程很晚才被系統支持,例如Linux直到內核2.6,才支持符合Posix規(guī)范的NPTL線程庫。進程和線程的特點,也就是各自的優(yōu)缺點如下:
進程優(yōu)點:編程、調試簡單,可靠性較高。
進程缺點:創(chuàng)建、銷毀、切換速度慢,內存、資源占用大。
線程優(yōu)點:創(chuàng)建、銷毀、切換速度快,內存、資源占用小。
線程缺點:編程、調試復雜,可靠性較差。


上面的對比可以歸結為一句話:“線程快而進程可靠性高”。線程有個別名叫“輕量級進程”,在有的書籍資料上介紹線程可以十倍、百倍的效率快于進程; 而進程之間不共享數據,沒有鎖問題,結構簡單,一個進程崩潰不像線程那樣影響全局,因此比較可靠。我相信這個觀點可以被大部分人所接受,因為和我們所接受 的知識概念是相符的。

在寫這篇文章前,我也屬于這“大部分人”,這兩年在用C語言編寫的幾個C/S通訊程序中,因時間緊總是采用多進程并發(fā)技術,而且是比較簡單的現場為 每客戶fork()一個進程,當時總是擔心并發(fā)量增大時負荷能否承受,盤算著等時間充裕了將它改為多線程形式,或者改為預先創(chuàng)建進程的形式,直到最近在網 上看到了一篇論文《Linux系統下多線程與多進程性能分析》作者“周麗 焦程波 蘭巨龍”,才認真思考這個問題,我自己也做了實驗,結論和論文作者的相似,但對大部分人可以說是顛覆性的。

下面是得出結論的實驗步驟和過程,結論究竟是怎樣的? 感興趣就一起看看吧。
實驗代碼使用周麗論文中的代碼樣例,我做了少量修改,值得注意的是這樣的區(qū)別:
論文實驗和我的實驗時間不同,論文所處的年代linux內核是2.4,我的實驗linux內核是2.6,2.6使用的線程庫是NPTL,2.4使用的是老的Linux線程庫(用進程模擬線程的那個LinuxThread)。
文實驗和我用的機器不同,論文描述了使用的環(huán)境:單 cpu 機器基本配置為:celeron 2.0 GZ, 256M, Linux 9.2,內核 2.4.8。我的環(huán)境是我的工作本本:單cpu單核celeron(R) M 1.5 GZ,1.5G內存,ubuntu10.04 desktop,內核2.6.32。

進程實驗代碼(fork.c):

[cpp]?view plaincopy
  • #include?<stdlib.h>??
  • #include?<stdio.h>??
  • #include?<signal.h>??
  • ???
  • #define?P_NUMBER?255????/*?并發(fā)進程數量?*/??
  • #define?COUNT?100???????/*?每進程打印字符串次數?*/??
  • #define?TEST_LOGFILE?"logFile.log"??
  • FILE?*logFile?=?NULL;??
  • ???
  • char?*s?=?"hello?linux\0";??
  • ???
  • int?main()??
  • {??
  • ????int?i?=?0,j?=?0;??
  • ????logFile?=?fopen(TEST_LOGFILE,?"a+");?/*?打開日志文件?*/??
  • ????for(i?=?0;?i?<?P_NUMBER;?i++)??
  • ????{??
  • ????????if(fork()?==?0)?/*?創(chuàng)建子進程,if(fork()?==?0){}這段代碼是子進程運行區(qū)間?*/??
  • ????????{??
  • ????????????for(j?=?0;j?<?COUNT;?j++)??
  • ????????????{??
  • ????????????????printf("[%d]%s\n",?j,?s);?/*?向控制臺輸出?*/??
  • ????????????????fprintf(logFile,"[%d]%s\n",?j,?s);?/*?向日志文件輸出?*/??
  • ????????????}??
  • ????????????exit(0);?/*?子進程結束?*/??
  • ????????}??
  • ????}??
  • ???
  • ????for(i?=?0;?i?<?P_NUMBER;?i++)?/*?回收子進程?*/??
  • ????{??
  • ????????wait(0);??
  • ????}??
  • ???
  • ????printf("OK\n");??
  • ????return?0;??
  • }??
  • 進程實驗代碼(thread.c):

    [cpp]?view plaincopy
  • #include?<pthread.h>??
  • #include?<unistd.h>??
  • #include?<stdlib.h>??
  • #include?<stdio.h>??
  • ???
  • #define?P_NUMBER?255????/*?并發(fā)線程數量?*/??
  • #define?COUNT?100???????/*?每線程打印字符串次數?*/??
  • #define?Test_Log?"logFIle.log"??
  • FILE?*logFile?=?NULL;??
  • ???
  • char?*s?=?"hello?linux\0";??
  • ???
  • print_hello_linux()?/*?線程執(zhí)行的函數?*/??
  • {??
  • ????int?i?=?0;??
  • ????for(i?=?0;?i?<?COUNT;?i++)??
  • ????{??
  • ????????printf("[%d]%s\n",?i,?s);?/*?向控制臺輸出?*/??
  • ????????fprintf(logFile,?"[%d]%s\n",?i,?s);?/*?向日志文件輸出?*/??
  • ????}??
  • ????pthread_exit(0);?/*?線程結束?*/??
  • }??
  • ???
  • int?main()??
  • {??
  • ????int?i?=?0;??
  • ????pthread_t?pid[P_NUMBER];?/*?線程數組?*/??
  • ????logFile?=?fopen(Test_Log,?"a+");?/*?打開日志文件?*/??
  • ???
  • ????for(i?=?0;?i?<?P_NUMBER;?i++)??
  • ????????pthread_create(&pid[i],?NULL,?(void?*)print_hello_linux,?NULL);?/*?創(chuàng)建線程?*/??
  • ???
  • ????for(i?=?0;?i?<?P_NUMBER;?i++)??
  • ????????pthread_join(pid[i],NULL);?/*?回收線程?*/??
  • ???
  • ????printf("OK\n");??
  • ????return?0;??
  • }??
  • 兩段程序做的事情是一樣的,都是創(chuàng)建“若干”個進程/線程,每個創(chuàng)建出的進程/線程打印“若干”條“hello linux”字符串到控制臺和日志文件,兩個“若干”由兩個宏 P_NUMBER和COUNT分別定義,程序編譯指令如下:

    [cpp]?view plaincopy
  • diaoyf@ali:~/tmp1$?gcc?-o?fork?fork.c??
  • diaoyf@ali:~/tmp1$?gcc?-lpthread?-o?thread?thread.c??
  • 實驗通過time指令執(zhí)行兩個程序,抄錄time輸出的掛鐘時間(real時間):

    [cpp]?view plaincopy
  • time?./fork??
  • time?./thread??
  • 每批次的實驗通過改動宏 P_NUMBER和COUNT來調整進程/線程數量和打印次數,每批次測試五輪,得到的結果如下:

    一、重復周麗論文實驗步驟

    ?第1次第2次第3次第4次第5次平均
    多進程0m1.277s0m1.175s0m1.227s0m1.245s0m1.228s0m1.230s
    多線程0m1.150s0m1.192s0m1.095s0m1.128s0m1.177s0m1.148s

    進程線程數:255 / 打印次數:100

    ?第1次第2次第3次第4次第5次平均
    多進程0m6.341s0m6.121s0m5.966s0m6.005s0m6.143s0m6.115s
    多線程0m6.082s0m6.144s0m6.026s0m5.979s0m6.012s0m6.048s

    進程線程數:255 / 打印次數:500

    ?第1次第2次第3次第4次第5次平均
    多進程0m12.155s0m12.057s0m12.433s0m12.327s0m11.986s0m12.184s
    多線程0m12.241s0m11.956s0m11.829s0m12.103s0m11.928s0m12.011s

    進程線程數:255 / 打印次數:1000

    ?第1次第2次第3次第4次第5次平均
    多進程1m2.182s1m2.635s1m2.683s1m2.751s1m2.694s1m2.589s
    多線程1m2.622s1m2.384s1m2.442s1m2.458s1m3.263s1m2.614s

    進程線程數:255 / 打印次數:5000

    本輪實驗是為了和周麗論文作對比,因此將進程/線程數量限制在255個,論文也是測試了255個進程/線程分別進行10 次,50 次,100 次,200 次……900 次打印的用時,論文得出的結果是:任務量較大時,多進程比多線程效率高;而完成的任務量較小時,多線程比多進程要快,重復打印 600 次時,多進程與多線程所耗費的時間相同。

    雖然我的實驗直到5000打印次數時,多進程才開始領先,但考慮到使用的是NPTL線程庫的緣故,從而可以證實了論文的觀點。從我的實驗數據看,多線程和多進程兩組數據非常接近,考慮到數據的提取具有瞬間性,因此可以認為他們的速度是相同的。

    當前的網絡環(huán)境中,我們更看中高并發(fā)、高負荷下的性能,縱觀前面的實驗步驟,最長的實驗周期不過1分鐘多一點,因此下面的實驗將向兩個方向延伸,第一,增加并發(fā)數量,第二,增加每進程/線程的工作強度。

    二、增加并發(fā)數量的實驗

    下面的實驗打印次數不變,而進程/線程數量逐漸增加。在實驗過程中多線程程序在后三組(線程數500,800,1000)的測試中都出現了“段錯誤”,出現錯誤的原因和線程棧的大小有關。

    實驗中的計算機CPU是32位的賽揚,尋址最大范圍是4GB(2的32次方),Linux是按照3GB/1GB的方式來分配內存,其中1GB屬于所 有進程共享的內核空間,3GB屬于用戶空間(進程虛擬內存空間),對于進程而言只有一個棧,這個??梢杂帽M這3GB空間(計算時需要排除程序文本、數據、 共享庫等占用的空間),所以它的大小通常不是問題。但對線程而言每個線程有一個線程棧,這3GB空間會被所有線程棧攤分,線程數量太多時,線程棧累計的大 小將超過進程虛擬內存空間大小,這就是實驗中出現的“段錯誤”的原因。

    Linux2.6的默認線程棧大小是8M,可以通過 ulimit -s 命令查看或修改,我們可以計算出線程數的最大上線: (1024*1024*1024*3) / (1024*1024*8) = 384,實際數字應該略小與384,因為還要計算程序文本、數據、共享庫等占用的空間。在當今的稍顯繁忙的WEB服務器上,突破384的并發(fā)訪問并不是稀 罕的事情,要繼續(xù)下面的實驗需要將默認線程棧的大小減小,但這樣做有一定的風險,比如線程中的函數分配了大量的自動變量或者函數涉及很深的棧幀(典型的是 遞歸調用),線程棧就可能不夠用了??梢耘浜鲜褂肞OSIX.1規(guī)定的兩個線程屬性guardsize和stackaddr來解決線程棧溢出問題, guardsize控制著線程棧末尾之后的一篇內存區(qū)域,一旦線程棧在使用中溢出并到達了這片內存,程序可以捕獲系統內核發(fā)出的告警信號,然后使用 malloc獲取另外的內存,并通過stackaddr改變線程棧的位置,以獲得額外的??臻g,這個動態(tài)擴展棧空間辦法需要手工編程,而且非常麻煩。

    有兩種方法可以改變線程棧的大小,使用 ulimit -s 命令改變系統默認線程棧的大小,或者在代碼中創(chuàng)建線程時通過pthread_attr_setstacksize函數改變棧尺寸,在實驗中使用的是第一 種,在程序運行前先執(zhí)行ulimit指令將默認線程棧大小改為1M:

    [cpp]?view plaincopy
  • diaoyf@ali:~/tmp1$?ulimit?-s?1024??
  • diaoyf@ali:~/tmp1$?time?./thread??
  • ?第1次第2次第3次第4次第5次平均
    多進程0m4.958s0m5.032s0m5.181s0m4.951s0m5.032s0m5.031s
    多線程0m4.994s0m5.040s0m5.071s0m5.113s0m5.079s0m5.059s

    進程線程數:100 / 打印次數:1000

    ?第1次第2次第3次第4次第5次平均
    多進程0m12.155s0m12.057s0m12.433s0m12.327s0m11.986s0m12.184s
    多線程0m12.241s0m11.956s0m11.829s0m12.103s0m11.928s0m12.011s

    進程線程數:255 / 打印次數:1000 (這里使用了第一次的實驗數據)

    ?第1次第2次第3次第4次第5次平均
    多進程0m17.686s0m17.569s0m17.609s0m17.663s0m17.784s0m17.662s
    多線程0m17.694s0m17.976s0m17.884s0m17.785s0m18.261s0m17.920s

    進程線程數:350 / 打印次數:1000

    ?第1次第2次第3次第4次第5次平均
    多進程0m23.638s0m23.543s0m24.135s0m23.981s0m23.507s0m23.761s
    多線程0m23.634s0m23.326s0m23.408s0m23.294s0m23.980s0m23.528s

    進程線程數:500 / 打印次數:1000 (線程棧大小更改為1M)

    ?第1次第2次第3次第4次第5次平均
    多進程0m38.517s0m38.133s0m38.872s0m37.971s0m38.005s0m38.230s
    多線程0m38.011s0m38.049s0m37.635s0m38.219s0m37.861s0m37.995s

    進程線程數:800 / 打印次數:1000 (線程棧大小更改為1M)

    ?第1次第2次第3次第4次第5次平均
    多進程0m48.157s0m47.921s0m48.124s0m48.081s0m48.126s0m48.082s
    多線程0m47.513s0m47.914s0m48.073s0m47.920s0m48.652s0m48.014s

    進程線程數:1000 / 打印次數:1000 (線程棧大小更改為1M)

    三、增加每進程/線程的工作強度的實驗

    這次將程序打印數據增大,原來打印字符串為:

  • char?*s =?"hello linux\0";
  • 現在修改為每次打印256個字節(jié)數據:

  • char?*s =?"1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\
  • 1234567890abcdef\0";
  • ?第1次第2次第3次第4次第5次平均
    多進程0m28.149s0m27.993s0m28.094s0m27.657s0m28.016s0m27.982s
    多線程0m28.171s0m27.764s0m27.865s0m28.041s0m27.780s0m27.924s

    進程線程數:255 / 打印次數:100

    ?第1次第2次第3次第4次第5次平均
    多進程2m20.357s2m19.740s2m19.965s2m19.788s2m19.796s2m19.929s
    多線程2m20.061s2m20.462s2m19.789s2m19.514s2m19.479s2m19.861s

    進程線程數:255 / 打印次數:500

    ?第1次第2次
    多進程9m39s9m17s
    多線程9m31s9m22s

    進程線程數:255 / 打印次數:2000 (實驗太耗時,因此只進行了2輪比對)

    【實驗結論】

    從上面的實驗比對結果看,即使Linux2.6使用了新的NPTL線程庫(據說比原線程庫性能提高了很多,唉,又是據說!),多線程比較多進程在效率上沒有任何的優(yōu)勢,在線程數增大時多線程程序還出現了運行錯誤,實驗可以得出下面的結論:

    在Linux2.6上,多線程并不比多進程速度快,考慮到線程棧的問題,多進程在并發(fā)上有優(yōu)勢。

    四、多進程和多線程在創(chuàng)建和銷毀上的效率比較

    預先創(chuàng)建進程或線程可以節(jié)省進程或線程的創(chuàng)建、銷毀時間,在實際的應用中很多程序使用了這樣的策略,比如Apapche預先創(chuàng)建進程、Tomcat 預先創(chuàng)建線程,通常叫做進程池或線程池。在大部分人的概念中,進程或線程的創(chuàng)建、銷毀是比較耗時的,在stevesn的著作《Unix網絡編程》中有這樣 的對比圖(第一卷 第三版 30章 客戶/服務器程序設計范式):

    行號 服務器描述 進程控制CPU時間(秒,與基準之差)Solaris2.5.1Digital Unix4.0bBSD/OS3.0
    0迭代服務器(基準測試,無進程控制)0.00.00.0
    1簡單并發(fā)服務,為每個客戶請求fork一個進程504.2168.929.6
    2預先派生子進程,每個子進程調用accept?6.21.8
    3預先派生子進程,用文件鎖保護accept25.210.02.7
    4預先派生子進程,用線程互斥鎖保護accept21.5??
    5預先派生子進程,由父進程向子進程傳遞套接字36.710.96.1
    6并發(fā)服務,為每個客戶請求創(chuàng)建一個線程18.74.7?
    7預先創(chuàng)建線程,用互斥鎖保護accept8.63.5?
    8預先創(chuàng)建線程,由主線程調用accept14.55.0?

    stevens已駕鶴西去多年,但《Unix網絡編程》一書仍具有巨大的影響力,上表中stevens比較了三種服務器上多進程和多線程的執(zhí)行效 率,因為三種服務器所用計算機不同,表中數據只能縱向比較,而橫向無可比性,stevens在書中提供了這些測試程序的源碼(也可以在網上下載)。書中介 紹了測試環(huán)境,兩臺與服務器處于同一子網的客戶機,每個客戶并發(fā)5個進程(服務器同一時間最多10個連接),每個客戶請求從服務器獲取4000字節(jié)數據, 預先派生子進程或線程的數量是15個。

    第0行是迭代模式的基準測試程序,服務器程序只有一個進程在運行(同一時間只能處理一個客戶請求),因為沒有進程或線程的調度切換,因此它的速度是 最快的,表中其他服務模式的運行數值是比迭代模式多出的差值。迭代模式很少用到,在現有的互聯網服務中,DNS、NTP服務有它的影子。第1~5行是多進 程服務模式,期中第1行使用現場fork子進程,2~5行都是預先創(chuàng)建15個子進程模式,在多進程程序中套接字傳遞不太容易(相對于多線程), stevens在這里提供了4個不同的處理accept的方法。6~8行是多線程服務模式,第6行是現場為客戶請求創(chuàng)建子線程,7~8行是預先創(chuàng)建15個 線程。表中有的格子是空白的,是因為這個系統不支持此種模式,比如當年的BSD不支持線程,因此BSD上多線程的數據都是空白的。

    從數據的比對看,現場為每客戶fork一個進程的方式是最慢的,差不多有20倍的速度差異,Solaris上的現場fork和預先創(chuàng)建子進程的最大差別是504.2 :21.5,但我們不能理解為預先創(chuàng)建模式比現場fork快20倍,原因有兩個:

    1. stevens的測試已是十幾年前的了,現在的OS和CPU已起了翻天覆地的變化,表中的數值需要重新測試。

    2. stevens沒有提供服務器程序整體的運行計時,我們無法理解504.2 :21.5的實際運行效率,有可能是1504.2 : 1021.5,也可能是100503.2 : 100021.5,20倍的差異可能很大,也可能可以忽略。

    因此我寫了下面的實驗程序,來計算在Linux2.6上創(chuàng)建、銷毀10萬個進程/線程的絕對用時。

    創(chuàng)建10萬個進程(forkcreat.c):

    [cpp]?view plaincopy
  • #include?<stdlib.h>??
  • #include?<signal.h>??
  • #include?<stdio.h>??
  • #include?<unistd.h>??
  • #include?<sys/stat.h>??
  • #include?<fcntl.h>??
  • #include?<sys/types.h>??
  • #include?<sys/wait.h>??
  • ???
  • int?count;??/*?子進程創(chuàng)建成功數量?*/??
  • int?fcount;?/*?子進程創(chuàng)建失敗數量?*/??
  • int?scount;?/*?子進程回收數量?*/??
  • ???
  • /*?信號處理函數–子進程關閉收集?*/??
  • void?sig_chld(int?signo)??
  • {??
  • ?????
  • ????pid_t?chldpid;?/*?子進程id?*/??
  • ????int?stat;?/*?子進程的終止狀態(tài)?*/??
  • ???
  • ????/*?子進程回收,避免出現僵尸進程?*/??
  • ????while?((chldpid?=?wait(&stat))?>?0)??
  • ????{??
  • ????????scount++;??
  • ????}??
  • }??
  • ???
  • int?main()??
  • {??
  • ????/*?注冊子進程回收信號處理函數?*/??
  • ????signal(SIGCHLD,?sig_chld);??
  • ???
  • ????int?i;??
  • ????for?(i?=?0;?i?<?100000;?i++)?//fork()10萬個子進程??
  • ????{??
  • ????????pid_t?pid?=?fork();??
  • ????????if?(pid?==?-1)?//子進程創(chuàng)建失敗??
  • ????????{??
  • ????????????fcount++;??
  • ????????}??
  • ????????else?if?(pid?>?0)?//子進程創(chuàng)建成功??
  • ????????{??
  • ????????????count++;??
  • ????????}??
  • ????????else?if?(pid?==?0)?//子進程執(zhí)行過程??
  • ????????{??
  • ????????????exit(0);??
  • ????????}??
  • ????}??
  • ???
  • ????printf("count:?%d?fcount:?%d?scount:?%d\n",?count,?fcount,?scount);??
  • }??

  • 創(chuàng)建10萬個線程(pthreadcreat.c):

    [cpp]?view plaincopy
  • #include?<stdio.h>??
  • #include?<pthread.h>??
  • ???
  • int?count?=?0;?/*?成功創(chuàng)建線程數量?*/??
  • ???
  • void?thread(void)??
  • {??
  • ????/*?線程啥也不做?*/??
  • }??
  • ???
  • int?main(void)??
  • {??
  • ????pthread_t?id;?/*?線程id?*/??
  • ????int?i,ret;??
  • ???
  • ????for?(i?=?0;?i?<?100000;?i++)?/*?創(chuàng)建10萬個線程?*/??
  • ????{??
  • ????????ret?=?pthread_create(&id,?NULL,?(void?*)thread,?NULL);??
  • ????????if(ret?!=?0)??
  • ????????{??
  • ????????????printf?("Create?pthread?error!\n");??
  • ????????????return?(1);??
  • ????????}??
  • ???
  • ????????count++;??
  • ???
  • ????????pthread_join(id,?NULL);??
  • ????}??
  • ?????
  • ????printf("count:?%d\n",?count);??
  • ???
  • }??

  • 在我的賽揚1.5G的CPU上測試結果如下(仍采用測試5次后計算平均值):

    創(chuàng)建銷毀10萬個進程創(chuàng)建銷毀10萬個線程創(chuàng)建銷毀10萬個線程(Java)
    0m18.201s0m3.159s12286毫秒

    從數據可以看出,多線程比多進程在效率上有5~6倍的優(yōu)勢,但不能讓我們在使用那種并發(fā)模式上定性,這讓我想起多年前政治課上的一個場景:在講到優(yōu) 越性時,面對著幾個對此發(fā)表質疑評論的調皮男生,我們的政治老師發(fā)表了高見,“不能只橫向地和當今的發(fā)達國家比,你應該縱向地和過去中國幾十年的發(fā)展歷史 比”。政治老師的話套用在當前簡直就是真理,我們看看,即使是在賽揚CPU上,創(chuàng)建、銷毀進程/線程的速度都是空前的,可以說是有質的飛躍的,平均創(chuàng)建銷 毀一個進程的速度是0.18毫秒,對于當前服務器幾百、幾千的并發(fā)量,還有預先派生子進程/線程的必要嗎?

    預先派生子進程/線程比現場創(chuàng)建子進程/線程要復雜很多,不僅要對池中進程/線程數量進行動態(tài)管理,還要解決多進程/多線程對accept的“搶” 問題,在stevens的測試程序中,使用了“驚群”和“鎖”技術。即使stevens的數據表格中,預先派生線程也不見得比現場創(chuàng)建線程快,在 《Unix網絡編程》第三版中,新作者參照stevens的測試也提供了一組數據,在這組數據中,現場創(chuàng)建線程模式比預先派生線程模式已有了效率上的優(yōu) 勢。因此我對這一節(jié)實驗下的結論是:

    預先派生進程/線程的模式(進程池、線程池)技術,不僅復雜,在效率上也無優(yōu)勢,在新的應用中可以放心大膽地為客戶連接請求去現場創(chuàng)建進程和線程。

    我想,這是fork迷們最愿意看到的結論了。

    總結

    以上是生活随笔為你收集整理的多进程 VS 多线程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    欧美精品一区二区在线播放 | 国产精品福利一区 | 国产日本在线观看 | 免费在线观看成人小视频 | 久久黄色a级片 | 免费a v观看| 久久久久国产精品视频 | 五月婷婷一级片 | 国产成人免费网站 | 欧美aaa视频 | av黄色在线播放 | 99精品国产福利在线观看免费 | 欧美激情奇米色 | 狠狠色伊人亚洲综合成人 | 911久久香蕉国产线看观看 | 国产涩涩网站 | 亚洲国内在线 | 97超碰在线免费 | av 在线观看 | 99免费在线播放99久久免费 | av中文字幕在线免费观看 | 五月婷社区 | 97超碰在线资源 | 欧美另类xxx| 在线观看精品国产 | 国产精品视频久久久 | 欧美日本不卡 | 日日操天天射 | 亚洲六月丁香色婷婷综合久久 | 久久午夜电影 | www日韩在线观看 | 黄色片免费电影 | 国产欧美精品一区二区三区四区 | 我要色综合天天 | 欧美在线99 | 国产99久久99热这里精品5 | 天天操天天操一操 | 91xav| 国产精品原创av片国产免费 | 久久国产精品成人免费浪潮 | 久久国产免费看 | 欧美色综合天天久久综合精品 | 婷婷中文字幕在线观看 | 国产视频精品视频 | 亚洲黄色高清 | av.com在线 | 久久99精品热在线观看 | av片免费播放 | 久久一区二区免费视频 | 丁香五月亚洲综合在线 | 99福利影院 | 丁香综合激情 | 黄网站app在线观看免费视频 | 91试看| 天天av资源 | 日韩精品字幕 | 免费在线观看av的网站 | 国产精品电影一区二区 | 婷婷丁香狠狠爱 | 精品久久久久久久久久岛国gif | 亚洲综合色视频在线观看 | 天堂av网址 | 天天插天天射 | 国产视频一区二区三区在线 | 天天色天天爱天天射综合 | 久久久久亚洲精品中文字幕 | 日本三级国产 | 欧美一区二区三区在线 | 日本激情视频中文字幕 | 三级av黄色 | 9ⅰ精品久久久久久久久中文字幕 | 久久私人影院 | 国产精品 国产精品 | 久草在线在线 | 国产99久久精品一区二区永久免费 | 久久国产精品色婷婷 | 激情综合中文娱乐网 | a一片一级 | 麻豆影视在线免费观看 | 99精品欧美一区二区三区 | 黄色aaa毛片 | 久久综合操 | 国产精品 中文在线 | 国产精品久久久久久久午夜 | 国产精品系列在线播放 | 成人精品福利 | 日韩午夜电影网 | 欧美黑人性猛交 | 韩国av电影在线观看 | 亚洲精品色视频 | 欧美日韩二区在线 | 久久男人免费视频 | 国产日韩欧美网站 | 国产999视频在线观看 | 国产亚洲一区 | 中文av在线免费观看 | 欧美日韩中文国产 | 五月婷婷综合激情 | 成 人 黄 色 视频播放1 | 天天操天天干天天爽 | 最新不卡av | 在线免费观看国产 | 五月av在线 | 日韩精品电影在线播放 | 99在线观看视频 | 成人国产网站 | 欧美在线观看视频免费 | 九九在线视频免费观看 | 丁香婷婷电影 | 不卡视频在线 | 欧美激情视频一区二区三区免费 | 国产精品女人久久久 | 国内综合精品午夜久久资源 | 99精品视频在线观看 | 国产在线精品一区二区三区 | 久久久久久久国产精品影院 | 国产不卡免费 | 中文字幕在线观看第一区 | 亚洲毛片在线观看. | 国产精品专区一 | 日韩精品中文字幕久久臀 | 93久久精品日日躁夜夜躁欧美 | 在线免费观看视频你懂的 | 在线免费观看麻豆视频 | 久久免费99精品久久久久久 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 涩涩伊人 | 免费在线观看日韩视频 | 亚洲日日夜夜 | 国产91学生粉嫩喷水 | 久久国产欧美日韩 | 四虎国产精品永久在线国在线 | 黄色aaa级片| 成人av资源 | 亚洲黄色免费 | av在线看片 | 麻豆免费精品视频 | 国产69精品久久久久久久久久 | 免费高清在线视频一区· | 美州a亚洲一视本频v色道 | 中文字幕久久网 | 91成人免费视频 | 亚洲综合精品在线 | 国产精品免费视频网站 | 久久视频 | 国产在线精品观看 | 黄色一级在线免费观看 | 亚洲传媒在线 | 中文字幕在线播放视频 | 亚洲一二三区精品 | 中文字幕色综合网 | 在线中文字幕一区二区 | 在线黄色观看 | 久久伊人婷婷 | 91精品国产乱码 | 欧美精品一区二区免费 | 欧美精品一区二区在线播放 | 91在线免费播放 | 992tv成人免费看片 | 在线观看岛国av | 97中文字幕 | 视频在线观看入口黄最新永久免费国产 | 亚洲涩涩色 | 国产精品观看视频 | 日韩资源在线播放 | 亚洲一区精品人人爽人人躁 | 91精品推荐 | 久久精品免费看 | 久热香蕉视频 | 色永久免费视频 | 久久爱综合 | 日韩av二区 | 成人av资源网站 | 日韩欧美一区二区三区视频 | 天天天天色综合 | 国产一区二区三区免费在线观看 | 成人久久久电影 | 五月婷亚洲 | 国产综合福利在线 | 亚洲成人黄色 | 久久综合五月天婷婷伊人 | 在线观看视频福利 | www亚洲精品| 欧美男同视频网站 | 丝袜一区在线 | 色天堂在线视频 | 精品久久一级片 | 99热这里只有精品久久 | 久久免费av | 国产女教师精品久久av | 日韩毛片久久久 | 久久久免费少妇 | 国产精品久久久久av | www91在线观看 | 精品国产一区二区三区在线观看 | 天天干天天插伊人网 | 91av视频在线免费观看 | 天天干夜夜爱 | 国产99久久精品一区二区永久免费 | 国产精品扒开做爽爽的视频 | 色综合久久久久综合体桃花网 | 欧美一级黄色片 | 久久精品视频国产 | 国产视频在线观看一区二区 | 中文电影网 | 免费在线播放视频 | 尤物97国产精品久久精品国产 | 中文字幕在线观看第二页 | 亚洲国产精品500在线观看 | 特级毛片在线免费观看 | 狠狠88综合久久久久综合网 | 国产精品3区 | 欧美性粗大hdvideo | 9797在线看片亚洲精品 | www.人人干 | 视频精品一区二区三区 | 中文字幕亚洲高清 | 在线观看免费成人 | 国产精品美女久久久久久2018 | 成年人免费看 | 日日干日日 | 免费黄色在线播放 | 欧美在线观看视频免费 | 91视视频在线直接观看在线看网页在线看 | 色网站视频| 伊人久久五月天 | 日韩中文免费视频 | 欧美一级黄大片 | 欧美一区二区在线 | 欧美成人在线网站 | 国产视频不卡 | a黄色影院| av中文字幕网 | 一级黄色片在线观看 | 超碰在线中文字幕 | 天天爽夜夜爽精品视频婷婷 | 四虎成人精品永久免费av九九 | 久草网站在线 | 国产最新视频在线 | 欧美日韩视频在线观看一区二区 | 在线视频手机国产 | 九九热视频在线免费观看 | 国产亚洲精品成人av久久影院 | 在线成人性视频 | av一区二区三区在线 | 日韩色在线 | 日韩毛片在线免费观看 | 在线观看视频你懂的 | 在线成人免费av | 亚洲少妇激情 | 亚洲精品h | 久久情爱| 免费日韩电影 | 最近乱久中文字幕 | 日日夜夜狠狠 | www色 | 国产黄色片一级三级 | 久久久久久国产一区二区三区 | 亚洲精品免费在线 | 最新国产中文字幕 | 91免费在线播放 | 欧美精品一区二区蜜臀亚洲 | 国产成人精品久久久久蜜臀 | 操久在线 | 麻豆视频网址 | 在线观看亚洲国产 | 久要激情网 | 在线看黄网站 | 在线播放 亚洲 | 欧美一二区视频 | 中文字幕免费久久 | 99综合久久 | www·22com天天操 | 亚洲国产99 | 久久99九九99精品 | 成人97人人超碰人人99 | 91成人精品一区在线播放69 | 超碰免费久久 | 国产视频18 | 久久综合狠狠综合 | 欧美激情视频在线观看免费 | 国产精品免费一区二区三区 | 91久久国产露脸精品国产闺蜜 | 玖玖爱免费视频 | 亚洲精品久久久久中文字幕m男 | 一区二区三区免费在线观看视频 | 亚洲最大激情中文字幕 | 久久国产精品99久久久久久丝袜 | 久草网首页 | 久久综合九色综合久99 | 日本三级中文字幕在线观看 | 国产资源在线免费观看 | 日韩综合精品 | 99 久久久久 | 国产成人高清在线 | www免费在线观看 | 久操中文字幕在线观看 | 日日干天天 | 天天干天天操天天入 | 成人小电影在线看 | 丁香午夜婷婷 | 国产打女人屁股调教97 | 色中色资源站 | 中文日韩在线视频 | 美女视频免费精品 | 婷婷在线网 | 国产香蕉97碰碰碰视频在线观看 | 91视频免费| 96av麻豆蜜桃一区二区 | 天天插天天爱 | 亚州国产精品视频 | 99在线精品免费视频九九视 | 日韩中文字幕电影 | 五月婷婷激情五月 | 99这里只有精品99 | 夜夜操狠狠操 | 国产精品久久在线观看 | a视频在线播放 | 婷婷色综合色 | 国产精品乱码一区二三区 | 激情 婷婷| 精品国产伦一区二区三区免费 | 在线免费精品视频 | 手机在线日韩视频 | 一区二区三区高清在线观看 | 天干啦夜天干天干在线线 | 狠狠色丁香婷婷综合久小说久 | 欧美xxxx性xxxxx高清 | 久久爱影视i | 在线av资源 | 国产精品久久久网站 | 91久久国产综合精品女同国语 | 日韩在线字幕 | 婷婷免费视频 | 亚洲精品视频在线看 | 国产一二区在线观看 | 2024国产精品视频 | 人人超碰人人 | 国产精品久久久久久久久婷婷 | 国产精品系列在线 | 亚洲综合在线视频 | 最近更新中文字幕 | 婷婷av网站| 91色综合 | 日本久久免费视频 | 成人蜜桃网| 久久a v电影 | 欧美日韩精品国产 | 国产精品资源在线观看 | 日韩欧美一区二区三区视频 | 国产最新在线观看 | 天天插天天狠天天透 | 在线看的av网站 | 国产精品一区电影 | 草久久av| 亚洲精品视频免费 | 9在线观看免费高清完整版在线观看明 | 中文字幕资源在线 | 成年人免费在线观看网站 | 午夜三级毛片 | 国产人成精品一区二区三 | 亚洲精选久久 | 黄色软件网站在线观看 | 97超碰资源站 | 综合在线亚洲 | 国产精品久久9 | 97碰碰碰| 久久久午夜精品福利内容 | 超碰免费公开 | 成人黄色在线观看视频 | 日韩精品视频一二三 | 亚洲女欲精品久久久久久久18 | av亚洲产国偷v产偷v自拍小说 | 色婷婷国产精品一区在线观看 | 中文字幕国产视频 | 在线精品在线 | 日本公妇在线观看高清 | 青青河边草免费观看完整版高清 | 中文字幕在线看片 | 久久久99久久| 四虎免费在线观看视频 | 日韩在线观看视频在线 | 国产免费成人 | 丁香花在线观看免费完整版视频 | 天天激情在线 | 日韩在线视频免费看 | 日韩欧美高清一区二区三区 | 999视频在线观看 | 日韩欧美一区二区三区免费观看 | 欧美日韩69| 99久久久国产精品美女 | 麻豆免费在线播放 | 国产在线观看国语版免费 | 久久国产一区 | 中文一区在线 | 91漂亮少妇露脸在线播放 | 精品免费99久久 | 免费高清在线视频一区· | 在线观看中文字幕一区二区 | 成人国产一区 | 欧美最猛性xxx | 黄色毛片一级片 | 精品一区二区久久久久久久网站 | 欧美日韩精品在线观看 | 久久精品视频3 | 免费91在线观看 | 国产亚洲精品久 | 一区二区三区在线视频观看58 | 92中文资源在线 | 久久国产色 | 欧美一级淫片videoshd | 91精品小视频 | 久草在线视频看看 | 免费视频一区 | 很黄很黄的网站免费的 | 天天做天天爱夜夜爽 | 久久久久久蜜桃一区二区 | 精品一区二区在线免费观看 | 992tv人人网tv亚洲精品 | 国产精品18久久久 | 日韩高清免费在线 | 中文字幕在线观看三区 | 色综合 久久精品 | 国产精品久久久久久久久久久久午夜片 | 91亚洲免费 | 欧美日韩高清国产 | 成人免费视频a | 黄色亚洲片| 国产正在播放 | 国产中文自拍 | 国产亚洲一级高清 | 欧美日韩中字 | 亚洲精品资源 | 色久网| 蜜臀aⅴ精品一区二区三区 久久视屏网 | 国产拍在线 | 五月婷婷丁香色 | 久亚洲| www.五月婷 | 亚洲免费黄色 | 99久久国产免费,99久久国产免费大片 | 91精品专区| 亚洲在线精品视频 | 91九色蝌蚪视频 | 黄色免费在线看 | 很污的网站 | 丁香六月久久综合狠狠色 | 91传媒91久久久 | av在线播放快速免费阴 | 成人蜜桃| 2019天天干天天色 | 亚洲九九九在线观看 | 免费看黄色大全 | 中文字幕免费在线 | 色综久久 | 国产伦精品一区二区三区免费 | 高清有码中文字幕 | 日韩高清免费在线 | 99中文字幕 | 国产精品1区 | 欧美最猛性xxxxx免费 | 精品国产乱子伦一区二区 | 国产亚洲一区二区在线观看 | 亚洲国产天堂av | 亚洲2019精品| 狠狠狠干 | 99国产精品一区二区 | 国内精品久久久久久久久久久 | 久久午夜电影网 | 狠狠色噜噜狠狠狠狠2022 | 久久网址| 色婷婷天天干 | 久久国产精品免费看 | 美女视频网 | av中文字幕av | 久久国产精品视频观看 | 色婷婷一| 在线国产精品视频 | 久草视频网| 久久人人爽人人爽人人片av软件 | 国产精品一区二区电影 | 日韩一区二区三区免费视频 | 五月视频| 欧美精品在线视频 | 国产精品手机在线 | 精品福利国产 | 狠狠操天天干 | 国产精品久久久久久久妇 | 韩国一区在线 | 国产亚洲精品无 | 久久久69 | 欧美一区二视频在线免费观看 | 黄色成人91 | 国产精品网红福利 | 草久久久久久 | 香蕉久草 | 精品人人人| 久久久久久久久久福利 | 日韩精品久久久 | 国产精品婷婷午夜在线观看 | av一级一片 | 丝袜av网站 | 天天曰天天 | 国内揄拍国产精品 | 精品久久久亚洲 | 91精品久久香蕉国产线看观看 | 久99久中文字幕在线 | 婷婷六月天天 | 久久草在线免费 | 久久精品一区二区三 | 999一区二区三区 | 亚洲精品乱码久久久久v最新版 | 视频二区在线 | 国产在线一线 | 日韩精品在线免费播放 | 高清国产午夜精品久久久久久 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 免费在线观看亚洲视频 | 天海翼一区二区三区免费 | 成人黄色小视频 | 日韩一区二区在线免费观看 | 精品特级毛片 | 手机色在线| 中文字幕在线看人 | 国产成人一区二区精品非洲 | 去看片 | 亚洲欧美日韩在线一区二区 | 天天激情综合 | 中文字幕乱码亚洲精品一区 | 激情电影影院 | 久久全国免费视频 | 久久综合久久综合久久 | 激情婷婷综合网 | 欧美日韩国产一二三区 | 国产精品一区二区久久久 | 欧美成人精品欧美一级乱 | 中文字幕在线看视频国产 | 97在线观看免费高清完整版在线观看 | 国产 欧美 日韩 | 欧美日韩亚洲国产一区 | 狠狠夜夜| 久久精品久久国产 | 日韩精品五月天 | 婷婷夜夜 | 日韩资源在线 | 久久在线视频在线 | 日本视频不卡 | 精品国产乱子伦一区二区 | 欧美成人理伦片 | 91一区啪爱嗯打偷拍欧美 | 成人在线视频在线观看 | 久久综合九色 | 91热精品 | 中文字幕中文中文字幕 | 国产在线精品一区二区三区 | 91av福利视频| 亚洲一区二区三区精品在线观看 | 黄色avwww | 国产精品欧美 | 最近中文字幕免费大全 | 天天操天天干天天玩 | 久久九九影视网 | 国产欧美日韩一区 | 国产高清视频在线播放一区 | 国产剧情一区二区 | 欧美日韩中文在线视频 | 麻豆传媒在线视频 | www.夜夜草 | 人人爽久久久噜噜噜电影 | 亚洲黄色一级大片 | 久久综合九色综合97_ 久久久 | 97av影院| 一区二区三区在线视频111 | 亚洲久草在线 | 国产精品久久艹 | 久久久蜜桃| avove黑丝 | 亚洲黄在线观看 | 日韩在线视频观看 | 国产青青青 | 欧美一级在线观看视频 | 波多野结衣在线播放视频 | 在线免费观看视频一区 | 亚洲成人网在线 | 免费在线视频一区二区 | 超碰在线人 | 欧美激情精品久久久久久变态 | 99视频99| 久久久99精品免费观看乱色 | a色视频 | 日韩欧美精品在线观看视频 | 国产一级a毛片视频爆浆 | 成人av电影免费在线播放 | 免费高清在线视频一区· | 在线观看电影av | 国产美女视频网站 | 久艹在线播放 | 国产亚洲无| 久99精品 | 永久免费的啪啪网站免费观看浪潮 | 精品亚洲欧美无人区乱码 | 亚洲激情av | 91一区一区三区 | 狠狠色狠狠色综合日日小说 | 激情综合亚洲精品 | 精品国产一区二区三区久久久蜜月 | 国产一级久久久 | 国产综合在线观看视频 | 国产小视频你懂的在线 | 日韩欧美在线播放 | 成人av地址 | 91热视频 | 免费视频三区 | 丁香高清视频在线看看 | 黄网站大全 | 亚洲精品久久久久久中文传媒 | 国产在线探花 | 久久久久久免费毛片精品 | 男女全黄一级一级高潮免费看 | 99久久婷婷国产综合亚洲 | 91超在线| 日韩激情小视频 | 欧美片一区二区三区 | 六月丁香婷婷久久 | 亚洲黄色激情小说 | 一区二区三区av在线 | 欧美一区二区日韩一区二区 | 久久免费视频1 | 91视频久久久 | 综合久久网站 | 久久小视频 | 免费国产ww | 黄色毛片视频免费 | 中文字幕精品一区二区三区电影 | 91精品国产欧美一区二区成人 | www178ccom视频在线 | av在线播放不卡 | 国产午夜激情视频 | 成人av中文字幕 | 国产少妇在线观看 | 久久天天综合网 | 国产精品精品 | 97香蕉久久超级碰碰高清版 | 欧美精品久久久久久久久久丰满 | 中文久草 | 91高清免费在线观看 | 一 级 黄 色 片免费看的 | 中文字幕永久 | 国产色视频一区二区三区qq号 | 国内精品久久天天躁人人爽 | 欧美日韩不卡在线 | 免费成人短视频 | 国产手机视频 | 国产免费影院 | 亚洲国产av精品毛片鲁大师 | 国产免费嫩草影院 | 久久免费视频在线 | 日日爱影视 | 色吊丝在线永久观看最新版本 | 久久麻豆精品 | 国产黄色片免费 | 中文字幕黄色网址 | 视频在线观看一区 | 91大神精品视频在线观看 | 免费看一级特黄a大片 | 亚洲在线色| 亚洲理论在线观看电影 | av在线网站观看 | 国产成人精品一区二区在线 | 99视频精品在线 | 一区二区三区在线视频观看58 | 国产成人av在线影院 | 日日操天天爽 | 久久精品99国产精品日本 | 韩国av一区二区三区 | 国产高清在线精品 | 亚洲最新av在线网址 | 国产一区在线视频播放 | 色综合天天做天天爱 | 91在线资源 | 午夜美女网站 | 中文字幕免费成人 | 91麻豆精品国产91久久久久久久久 | 色之综合网 | 99久久99久久精品国产片 | 97超碰人人澡 | 婷婷久草 | 日韩毛片一区 | 99在线热播精品免费 | 久久国产综合视频 | 亚洲精品中文在线观看 | 97视频人人免费看 | 2022久久国产露脸精品国产 | 国产亚洲观看 | 99国产成+人+综合+亚洲 欧美 | 天天干,夜夜操 | 成人一区二区三区在线 | avwww在线观看| 91av在线视频免费观看 | 美女视频一区二区 | 超级碰碰免费视频 | 中文字幕免费观看全部电影 | 亚洲国产精品激情在线观看 | 国产日本三级 | 免费高清在线一区 | 国产麻豆剧传媒免费观看 | 人人玩人人添人人澡超碰 | 婷婷开心久久网 | 日韩一区二区在线免费观看 | 精品亚洲午夜久久久久91 | 亚洲精品综合欧美二区变态 | av日韩精品 | 91丨九色丨蝌蚪丨对白 | 亚洲激精日韩激精欧美精品 | 欧美91在线| 日本成人a | 五月婷婷.com | 国产精品不卡在线观看 | 久久高清片 | 欧洲精品久久久久毛片完整版 | 亚洲综合一区二区精品导航 | 久久伊人婷婷 | 西西444www大胆无视频 | 成人在线播放视频 | 怡红院av久久久久久久 | 激情综合亚洲精品 | www.xxxx变态.com | 91夜夜夜| 国产中文自拍 | 一级黄色在线免费观看 | 麻豆久久久久久久 | 欧美日韩久久不卡 | 波多野结衣小视频 | 9ⅰ精品久久久久久久久中文字幕 | 日韩精品视频在线免费观看 | 国产精品mm | 在线观看av不卡 | 青青河边草免费直播 | 天天在线视频色 | 久久久久久久久久久久国产精品 | 欧美日韩一区二区三区免费视频 | 91麻豆精品国产自产 | 一区二区在线不卡 | 免费在线观看av电影 | 亚洲小视频在线 | 国产理伦在线 | a成人v在线 | 亚洲a色| 日韩成人免费在线 | 免费亚洲一区二区 | 日本中文字幕高清 | 国产一区二三区好的 | 久久成人亚洲欧美电影 | 欧美三级高清 | 亚洲国产精品推荐 | 超碰公开97 | 国产精品系列在线 | 日韩av午夜在线观看 | 日韩午夜小视频 | 五月开心网 | www.色就是色 | 97成人资源 | 久久经典国产 | 中文字幕在线电影 | 91久久丝袜国产露脸动漫 | 免费av在线网 | 久久网站最新地址 | 香蕉网站在线观看 | 五月婷婷伊人网 | 毛片黄色一级 | 丁香久久综合 | 夜色资源站国产www在线视频 | 久99久中文字幕在线 | 日本黄色免费网站 | 久久久精品一区二区 | 国产最新精品视频 | 99精品在线直播 | 国产资源在线播放 | 国产精彩在线视频 | 成人免费影院 | 亚洲精品高清视频在线观看 | 91在线观看高清 | 国产91精品欧美 | 成人午夜电影免费在线观看 | 天天干天天干天天干 | 麻花豆传媒mv在线观看 | 久久精品人人做人人综合老师 | 九九九九九九精品任你躁 | 国产色婷婷精品综合在线手机播放 | 草莓视频在线观看免费观看 | 99热国产精品 | 狠狠操精品 | 天天撸夜夜操 | 香蕉视频日本 | 成人免费观看视频网站 | 夜夜骑天天操 | 99国产一区二区三精品乱码 | 日韩av高清在线观看 | 黄色av电影网 | 毛片永久新网址首页 | 337p日本欧洲亚洲大胆裸体艺术 | 噜噜色官网| 日韩高清一区在线 | 精品成人a区在线观看 | 国产精品一区二区三区久久 | 成人免费观看大片 | 日韩在线视频观看免费 | 亚洲欧美经典 | 人人干狠狠干 | 韩日精品中文字幕 | 色综合久久综合中文综合网 | 日韩在线视 | 国产在线一卡 | 欧洲一区二区三区精品 | 欧美91片 | 在线看成人 | 久久国产视频网 | 91大神免费视频 | 午夜精品久久久久久中宇69 | 国产高清无av久久 | 精品国产一二三四区 | 国产精品九九九九九 | 国产一二三四在线观看视频 | 91色吧 | a色视频| 丁香婷婷激情国产高清秒播 | 国产精品综合久久久久久 | 色诱亚洲精品久久久久久 | 激情网婷婷 | 国产精品激情在线观看 | 成人小视频在线观看免费 | 天天操天天干天天操天天干 | 欧美韩国日本在线观看 | 精品久久久久一区二区国产 | 欧美 亚洲 另类 激情 另类 | 91精品国产麻豆 | 最新高清无码专区 | 久久精品一区八戒影视 | 91大神精品视频 | 国产成人精品免高潮在线观看 | 亚洲成人中文在线 | 国产精品久久久久久99 | 中文免费在线观看 | 亚洲福利精品 | 日本韩国在线不卡 | 激情综合交 | 久草视频首页 | 婷婷亚洲五月 | 日p在线观看 | av成人免费在线观看 | 亚洲尺码电影av久久 | 在线高清av | 精品高清美女精品国产区 | 婷婷视频 | 日韩电影在线观看中文字幕 | 久草91视频 | 久草在线在线精品观看 | 久草在线观| 国产精品扒开做爽爽的视频 | 激情五月婷婷综合 | 天天草天天干天天 | 久久久久国产精品视频 | 一区二区精品视频 | 91成人精品| 中国一级特黄毛片大片久久 | 精品国产诱惑 | 国产视频在线观看免费 | 91系列在线观看 | 久久婷婷亚洲 | 特级黄色片免费看 | 美女免费网站 | 99爱视频在线观看 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 亚洲国产欧美在线人成大黄瓜 | 五月婷婷激情 | 九九视频这里只有精品 | 日日躁夜夜躁aaaaxxxx | 免费网站黄 | 欧美日韩国产区 | 日本韩国中文字幕 | 99视频在线免费观看 | 国内精品久久久 | 美女一二三区 | 久久蜜臀一区二区三区av | 日韩成人精品一区二区三区 | 在线观看av片 | a v在线观看 | 国产精品精品久久久久久 | 中文字幕免费国产精品 | 91精品久久久久久久91蜜桃 | 久久免费视频在线 | 中文成人字幕 | 国产男女无遮挡猛进猛出在线观看 | 欧美日韩中文视频 | 人人干人人干人人干 | 日韩免费在线网站 | 久久久免费观看视频 | 亚洲婷婷在线视频 | 日本中文字幕视频 | 黄色一级大片在线免费看国产一 | 欧美性猛片, | 国产福利91精品一区二区三区 | 中文字幕一区二区三区四区视频 | 国产高清视频网 | 午夜在线观看一区 | 天天操天天操天天爽 | 久久无码av一区二区三区电影网 | 欧美精品二区 | 中文字幕免费看 | 欧美日韩视频在线播放 | 91香蕉视频污在线 | 国产亚洲aⅴaaaaaa毛片 | 久久国产精品二国产精品中国洋人 | 免费av网站在线看 | 精品视频国产 | 国产区高清在线 | 久久综合中文字幕 | 91丨九色丨国产在线 | 日韩在线观看视频中文字幕 | 米奇影视7777| 九热在线| 色综合久久久 | 欧美91精品久久久久国产性生爱 | 久久99亚洲精品久久久久 | 天天色天天综合 | 免费精品国产va自在自线 | 狠狠狠狠狠干 | 午夜免费电影院 | 91九色综合 | 日韩va在线观看 | 男女啪啪免费网站 | 亚洲国产播放 | 亚洲精品五月天 | 国产精品短视频 | 在线观看网站黄 | 亚洲国产剧情av | 精品伊人久久久 | 激情影音 | 999久久久免费视频 午夜国产在线观看 | 视频三区 | 亚洲午夜精品久久久久久久久 | 国产主播大尺度精品福利免费 | 国产精品二区在线观看 | 五月天国产 | 久草在线最新 | 五月婷婷一区二区三区 | 欧美亚洲国产精品久久高清浪潮 | 精品中文字幕视频 | 西西444www高清大胆 | 香蕉免费在线 | 色之综合网 | 超级碰碰碰碰 | 免费福利片2019潦草影视午夜 | 精品国内自产拍在线观看视频 | 黄色小说在线免费观看 | 精品国产一区二区三区男人吃奶 | 亚洲精品乱码 | 四虎5151久久欧美毛片 | 97视频成人 | 国产日韩欧美在线观看视频 | 人人爽爽人人 | 一级理论片在线观看 | 日韩影片在线观看 | 国产福利免费看 | 国产精品综合久久久久久 | 久久成人一区二区 | 黄污网 | 中文超碰字幕 | 国产视频日韩视频欧美视频 | av在线免费观看黄 | 久久午夜精品影院一区 | 91最新视频 | 亚洲成a人片77777潘金莲 | 亚洲 中文 在线 精品 | 国产精品对白一区二区三区 | 日韩美女av在线 | 丁香高清视频在线看看 | 国产精品v欧美精品v日韩 | 日韩va亚洲va欧美va久久 | 99九九视频 | 九色精品| 99亚洲天堂| 91伊人影院 | 欧美精品久久久久久久久久 | 四虎在线观看精品视频 | 婷婷六月丁香激情 | 亚洲,播放 | 日韩专区一区二区 | 久操久 | 俺要去色综合狠狠 | 欧美精品久久久久久久久久久 | 麻豆影音先锋 | 亚洲免费av片 | 国产九九在线 | 中文字幕在线观看三区 | 久久久91精品国产一区二区三区 | 国产成人精品女人久久久 | 综合久久精品 |