精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺談CLR線程池的缺點及解決方法

開發 后端
關于CLR線程池的基本概念我們還不太清楚,這里筆者再來補充一些必要的信息,有助于我們在程序中選擇合適的使用方式。這里將談到獨立線程池與IO線程池。

獨立線程池

上次我們在CLR線程池的作用與原理淺析一文中討論到,在一個.NET應用程序中會有一個CLR線程池,可以使用ThreadPool類中的靜態方法來使用這個線程池。我們只要使用QueueUserWorkItem方法向線程池中添加任務,線程池就會負責在合適的時候執行它們。我們還討論了CLR線程池的一些高級特性,例如對線程的最大和最小數量作限制,對線程創建時間作限制以避免突發的大量任務消耗太多資源等等。

那么.NET提供的線程池又有什么缺點呢?有些朋友說,一個重要的缺點就是功能太簡單,例如只有一個隊列,沒法做到對多個隊列作輪詢,無法取消任務,無法設定任務優先級,無法限制任務執行速度等等。不過其實這些簡單的功能,倒都可以通過在CLR線程池上增加一層(或者說,通過封裝CLR線程池)來實現。例如,您可以讓放入CLR線程池中的任務,在執行時從幾個自定義任務隊列中挑選一個運行,這樣便達到了對多個隊列作輪詢的效果。因此,在我看來,CLR線程池的主要缺點并不在此。

我認為,CLR線程池的主要問題在于“大一統”,也就是說,整個進程內部幾乎所有的任務都會依賴這個線程池。如前篇文章所說的那樣,如Timer和WaitForSingleObject,還有委托的異步調用,.NET框架中的許多功能都依賴這個線程池。這個做法是合適的,但是由于開發人員對于統一的線程池無法做到精確控制,因此在一些特別的需要就無法滿足了。舉個最常見例子:控制運算能力。什么是運算能力?那么還是從線程講起吧。

我們在一個程序中創建一個線程,安排給它一個任務,便交由操作系統來調度執行。操作系統會管理系統中所有的線程,并且使用一定的方式進行調度。什么是“調度”?調度便是控制線程的狀態:執行,等待等等。我們都知道,從理論上來說有多少個處理單元(如2 * 2 CPU的機器便有4個處理單元),就表示操作系統可以同時做幾件事情。但是線程的數量會遠遠超過處理單元的數量,因此操作系統為了保證每個線程都被執行,就必須等一個線程在某個處理器上執行到某個情況的時候,“換”一個新的線程來執行,這便是所謂的“上下文切換(context switch)”。至于造成上下文切換的原因也有多種,可能是某個線程的邏輯決定的,如遇上鎖,或主動進入休眠狀態(調用Thread.Sleep方法),但更有可能是操作系統發現這個線程“超時”了。在操作系統中會定義一個“時間片(timeslice)”2,當發現一個線程執行時間超過這個時間,便會把它撤下,換上另外一個。這樣看起來,多個線程——也就是多個任務在同時運行了。值得一提的是,對于Windows操作系統來說,它的調度單元是線程,這和線程究竟屬于哪個進程并沒有關系。

舉個例子,如果系統中只有兩個進程,進程A有5個線程,而進程B有10個線程。在排除其他因素的情況下,進程B占有運算單元的時間便是進程A的兩倍。當然,實際情況自然不會那么簡單。例如不同進程會有不同的優先級,線程相對于自己所屬的進程還會有個優先級;如果一個線程在許久沒有執行的時候,或者這個線程剛從“鎖”的等待中恢復,操作系統還會對這個線程的優先級作臨時的提升——這一切都是牽涉到程序的運行狀態,性能等情況的因素,有機會我們在做展開。

現在您意識到線程數量意味著什么了沒?沒錯,就是我們剛才提到的“運算能力”。很多時候我們可以簡單的認為,在同樣的環境下,一個任務使用的線程數量越多,它所獲得的運算能力就比另一個線程數量較少的任務要來得多。運算能力自然就涉及到任務執行的快慢。您可以設想一下,有一個生產任務,和一個消費任務,它們使用一個隊列做臨時存儲。在理想情況下,生產和消費的速度應該保持相同,這樣可以帶來最好的吞吐量。如果生產任務執行較快,則隊列中便會產生堆積,反之消費任務就會不斷等待,吞吐量也會下降。因此,在實現的時候,我們往往會為生產任務和消費任務分別指派獨立的線程池,并且通過增加或減少線程池內線程數量來條件運算能力,使生產和消費的步調達到平衡。

使用獨立的線程池來控制運算能力的做法很常見,一個典型的案例便是SEDA架構:整個架構由多個Stage連接而成,每個Stage均由一個隊列和一個獨立的線程池組成,調節器會根據隊列中任務的數量來調節線程池內的線程數量,最終使應用程序獲得優異的并發能力。

在Windows操作系統中,Server 2003及之前版本的API也只提供了進程內部單一的線程池,不過在Vista及Server 2008的API中,除了改進線程池的性能之外,還提供了在同一進程內創建多個線程池的接口。很可惜,.NET直到如今的4.0版本,依舊沒有提供構建獨立線程池的功能。構造一個優秀的線程池是一件相當困難的事情,幸運的是,如果我們需要這方面的功能,可以借助著名的SmartThreadPool,經過那么多年的考驗,相信它已經足夠成熟了。如果需要,我們還可以對它做一定修改——畢竟在不同情況下,我們對線程池的要求也不完全相同。

IO線程池

IO線程池便是為異步IO服務的線程池。

訪問IO最簡單的方式(如讀取一個文件)便是阻塞的,代碼會等待IO操作成功(或失敗)之后才繼續執行下去,一切都是順序的。但是,阻塞式IO有很多缺點,例如讓UI停止響應,造成上下文切換,CPU中的緩存也可能被清除甚至內存被交換到磁盤中去,這些都是明顯影響性能的做法。此外,每個IO都占用一個線程,容易導致系統中線程數量很多,最終限制了應用程序的伸縮性。因此,我們會使用“異步IO”這種做法。

在使用異步IO時,訪問IO的線程不會被阻塞,邏輯將會繼續下去。操作系統會負責把結果通過某種方法通知我們,一般說來,這種方式是“回調函數”。異步IO在執行過程中是不占用應用程序的線程的,因此我們可以用少量的線程發起大量的IO,所以應用程序的響應能力也可以有所提高。此外,同時發起大量IO操作在某些時候會有額外的性能優勢,例如磁盤和網絡可以同時工作而不互相沖突,磁盤還可以根據磁頭的位置來訪問就近的數據,而不是根據請求的順序進行數據讀取,這樣可以有效減少磁頭的移動距離。

Windows操作系統中有多種異步IO方式,但是性能最高,伸縮性最好的方式莫過于傳說中的“IO完成端口(I/O Completion Port,IOCP)”了,這也是.NET中封裝的唯一異步IO方式。大約一年半前,老趙寫過一篇文章《正確使用異步操作》,其中除了描述計算密集型和IO密集型操作的區別和效果之外,還簡單地講述了IOCP與CLR交互的方式,摘錄如下:

當我們希望進行一個異步的IO-Bound Operation時,CLR會(通過Windows API)發出一個IRP(I/O Request Packet)。當設備準備妥當,就會找出一個它“最想處理”的IRP(例如一個讀取離當前磁頭最近的數據的請求)并進行處理,處理完畢后設備將會(通過Windows)交還一個表示工作完成的IRP。CLR會為每個進程創建一個IOCP(I/O Completion Port)并和Windows操作系統一起維護。IOCP中一旦被放入表示完成的IRP之后(通過內部的ThreadPool.BindHandle完成),CLR就會盡快分配一個可用的線程用于繼續接下去的任務。
不過事實上,使用Windows API編寫IOCP非常復雜。而在.NET中,由于需要迎合標準的APM(異步編程模型),在使用方便的同時也放棄一定的控制能力。因此,在一些真正需要高吞吐量的時候(如編寫服務器),不少開發人員還是會選擇直接使用Native Code編寫相關代碼。不過在絕大部分的情況下,.NET中利用IOCP的異步IO操作已經足以獲得非常優秀的性能了。使用APM方式在.NET中使用異步IO非常簡單,如下:

  1. static void Main(string[] args)  
  2. {  
  3.     WebRequest request = HttpWebRequest.Create("http://www.cnblogs.com");  
  4.     request.BeginGetResponse(HandleAsyncCallback, request);  
  5. }  
  6.  
  7. static void HandleAsyncCallback(IAsyncResult ar)  
  8. {  
  9.     WebRequest request = (WebRequest)ar.AsyncState;  
  10.     WebResponse response = request.EndGetResponse(ar);  
  11.     // more operations...  
  12. }

BeginGetResponse 將發起一個利用IOCP的異步IO操作,并在結束時調用HandleAsyncCallback回調函數。那么,這個回調函數是由哪里的線程執行的呢?沒錯,就是傳說中“IO線程池”的線程。.NET在一個進程中準備了兩個線程池,除了上篇文章中所提到的CLR線程池之外,它還為異步IO操作的回調準備了一個IO線程池。IO線程池的特性與CLR線程池類似,也會動態地創建和銷毀線程,并且也擁有最大值和最小值(可以參考上一篇文章列舉出的API)。

只可惜,IO線程池也僅僅是那“一整個”線程池,CLR線程池的缺點IO線程池也一應俱全。例如,在使用異步IO方式讀取了一段文本之后,下一步操作往往是對其進行分析,這就進入了計算密集型操作了。但對于計算密集型操作來說,如果使用整個IO線程池來執行,我們無法有效的控制某項任務的運算能力。因此在有些時候,我們在回調函數內部會把計算任務再次交還給獨立的線程池。這么做從理論上看會增大線程調度的開銷,不過實際情況還得看具體的評測數據。如果它真的成為影響性能的關鍵因素之一,我們就可能需要使用Native Code來調用IOCP相關API,將回調任務直接交給獨立的線程池去執行了。

我們也可以使用代碼來操作IO線程池,例如下面這個接口便是向IO線程池遞交一個任務:

  1. public static class ThreadPool  
  2. {  
  3.     public static bool UnsafeQueueNativeOverlapped(NativeOverlapped* overlapped);  

NativeOverlapped包含了一個IOCompletionCallback回調函數及一個緩沖對象,可以通過Overlapped對象創建

Overlapped會包含一個被固定的空間,這里“固定”的含義表示不會因為GC而導致地址改變,甚至不會被置換到硬盤上的Swap空間去。這么做的目的是迎合IOCP的要求,但是很明顯它也會降低程序性能。因此,我們在實際編程中幾乎不會使用這個方法3。

注1:如果沒有加以說明,我們這里談論的對象默認為XP及以上版本的Window操作系統。

注2:timeslice又被稱為quantum,不同操作系統中定義的這個值并不相同。在Windows客戶端操作系統(XP,Vista)中時間片默認為2個clock interval,在服務器操作系統(2003,2008)中默認為12個clock interval(在主流系統上,1個clock interval大約10到15毫秒)。服務器操作系統使用較長的時間片,是因為一般服務器上運行的程序比客戶端要少很多,且更注重性能和吞吐量,而客戶端系統更注重響應能力——而且,如果您真需要的話,時間片的長度也是可以調整的。

注3:不過,如果程序中多次復用單個NativeOverlapped對象的話,這個方法的性能會略微好于QueueUserWorkItem,據說WCF中便使用了這種方式——微軟內部總有那么些技巧是我們不知如何使用的,例如老趙記得之前查看ASP.NET AJAX源代碼的時候,在MSDN中不小心發現一個接口描述大意是“預留方法,請不要在外部使用”。對此,我們又能有什么辦法呢?

【編輯推薦】

  1. CLR線程池的作用與原理淺析
  2. 一個非常簡單和短小的線程池
  3. Java學習:線程池的簡單構建
  4. 創建Java中的線程池
  5. 線程池與工作隊列
責任編輯:彭凡 來源: cnblogs
相關推薦

2009-07-03 18:14:27

Servlet線程安全

2009-06-17 15:33:50

java heap s

2009-07-22 09:39:18

CLR線程池

2010-07-22 14:05:33

krb5-telnet

2009-07-09 17:14:11

Incompatibl

2009-07-01 18:14:36

JSP亂碼

2023-10-26 08:16:20

C++線程

2009-07-10 14:32:06

JVM崩潰

2011-05-06 17:25:58

硒鼓

2022-04-02 20:27:30

ETS操作系統鴻蒙

2010-08-12 09:30:08

Flex內存泄露

2012-05-15 02:18:31

Java線程池

2010-06-21 09:54:50

Linux Aplay

2011-04-29 13:22:48

ThinkPad筆記本故障

2019-10-11 19:45:28

SparkSQLHiveHadoop

2011-12-02 14:00:21

JavaOOM

2016-09-23 20:46:53

2011-06-16 10:27:55

.NET內存泄漏

2009-07-15 16:14:36

iBATIS優缺點

2010-12-27 10:48:10

VirtualboxFreedos
點贊
收藏

51CTO技術棧公眾號

欧美在线一级视频| 日韩精品视频中文在线观看| 免费看av软件| 性一交一乱一伧老太| 国产一区白浆| 久久韩剧网电视剧| 艳妇乳肉亭妇荡乳av| jvid一区二区三区| 亚洲综合网站在线观看| 日本一区二区在线| 日本高清视频免费观看| 免费观看在线综合色| 欧美激情在线一区| 久久久久99精品成人| 国产精品白丝一区二区三区| 色偷偷一区二区三区| 97超碰人人爱| 岛国视频免费在线观看| 国产99精品国产| 国产精品视频免费观看www| 国产亚洲精品av| 成人精品影视| 亚洲精品丝袜日韩| 又大又长粗又爽又黄少妇视频| 二吊插入一穴一区二区| 亚洲国产一区视频| 四虎精品欧美一区二区免费| 成年网站在线| 91丨九色丨蝌蚪丨老版| 99国产超薄肉色丝袜交足的后果 | 牛牛影视精品影视| 成人性生交大片免费看视频在线| 国产精品小说在线| 手机在线看片1024| 91久久亚洲| 欧美国产欧美亚洲国产日韩mv天天看完整| 纪美影视在线观看电视版使用方法| 高清日韩欧美| 欧美草草影院在线视频| 日本中文字幕影院| 国产精品伦一区二区| 色综合久久久网| 日韩avxxx| 忘忧草在线影院两性视频| 亚洲一区二区三区四区五区黄| 亚洲欧美一区二区原创| 成年人在线观看网站| 久久久精品免费网站| 蜜桃传媒视频麻豆第一区免费观看 | 国产丝袜在线播放| 亚洲一区二区在线免费看| 肉大捧一出免费观看网站在线播放| av一本在线| 中文字幕va一区二区三区| 日韩av免费电影| 成人在线免费观看| 国产精品日韩成人| 中文字幕一区二区中文字幕| 亚洲搞黄视频| 亚洲天堂中文字幕| 欧美a级免费视频| 国产偷倩在线播放| 婷婷成人综合网| 久久久久狠狠高潮亚洲精品| 成人动漫一区| 欧美亚洲国产怡红院影院| 性欧美极品xxxx欧美一区二区| 视频在线日韩| 欧美日韩精品一区二区天天拍小说| 日韩av片网站| 美国十次综合久久| 亚洲成在人线av| 无码国产69精品久久久久同性| 九九热精品视频在线观看| 一道本无吗dⅴd在线播放一区| 99在线视频免费| 综合天堂av久久久久久久| 欧美极品少妇xxxxx| 日韩成人免费观看| 日韩国产一区二| 成人做爽爽免费视频| www.日本在线观看| 91亚洲精品一区二区乱码| 欧美日韩在线播放一区二区| 91青青在线视频| 亚洲一区二区三区四区在线| 国内性生活视频| 欧美91在线|欧美| 精品少妇一区二区三区免费观看| 大地资源二中文在线影视观看| 精品国产午夜| 色综合天天综合网国产成人网 | 91官网在线观看| www.久久久久久久久久久| 成人台湾亚洲精品一区二区 | 国产精品成人一区二区三区| 午夜国产在线观看| 1024精品合集| 国产三区在线视频| 警花av一区二区三区| 日韩精品在线播放| 欧美黑人一级片| 日本特黄久久久高潮| av在线不卡一区| 成人精品一区| 精品国产91久久久久久老师| 91插插插插插插插插| 欧美精品密入口播放| 久久五月情影视| 国产精品自拍第一页| 粉嫩av亚洲一区二区图片| 亚洲 国产 日韩 综合一区| caoporn视频在线| 欧美一区二视频| 国产综合精品久久久久成人av| 亚洲一级二级| 91九色单男在线观看| 免费在线一级视频| 亚洲国产精品一区二区久久| 一级黄色特级片| 一区二区三区日本久久久 | 亚洲成人网在线| 一级黄色录像视频| 久久国产成人午夜av影院| 精品一区二区视频| 美女精品导航| 日韩一区二区影院| 日韩精品久久久久久久的张开腿让| 亚洲啪啪91| 91久久国产自产拍夜夜嗨| av色图一区| 欧美四级电影网| 亚洲av无码一区二区三区人| 亚洲精品美女| 国产一区在线免费观看| 好看的中文字幕在线播放| 91精品国产综合久久婷婷香蕉 | 992kp免费看片| 久久五月天小说| 国产拍精品一二三| av电影在线网| 欧美日本国产视频| 亚洲一区电影在线观看| 久草热8精品视频在线观看| 亚洲欧美日韩另类精品一区二区三区 | 欧美日韩亚洲系列| 99久久免费看精品国产一区| 亚洲激情不卡| 精品一区久久| 成人爽a毛片免费啪啪| 精品视频中文字幕| 国产乱码77777777| 日本一区二区视频在线| 亚洲一二三区av| 欧美3p在线观看| 92福利视频午夜1000合集在线观看| 老司机在线永久免费观看| 欧美喷潮久久久xxxxx| 三级黄色免费观看| 国产一区不卡视频| 男人添女荫道口女人有什么感觉| 亚洲乱码一区| 97国产真实伦对白精彩视频8| 人妻少妇精品无码专区久久| 狠狠色狠狠色综合日日五| 一级片视频免费看| 美国毛片一区二区| 国产精品自拍合集| 鲁大师精品99久久久| 日韩美女视频在线观看| 中文字幕在线视频区| 日韩一区二区电影在线| 99精品视频99| 中文字幕第一页久久| 曰本三级日本三级日本三级| 亚洲国产专区| 日韩国产精品一区二区| 大胆国模一区二区三区| 91精品国产99久久久久久| 国产高清av在线| 91精品国模一区二区三区| 日韩 欧美 精品| 亚洲国产精品成人久久综合一区 | 免费一级欧美在线大片| 久久免费视频网| 国产精品免费播放| 欧美成人乱码一区二区三区| 日韩精品一区二区亚洲av| 国产精品久久久久久亚洲伦| 免费观看污网站| 久久一二三四| 国产 国语对白 露脸| 亚洲第一论坛sis| 亚洲自拍偷拍在线| 免费观看一级欧美片| 久久中文字幕在线视频| 欧美孕妇孕交xxⅹ孕妇交| 欧美日本高清视频在线观看| 日本网站在线播放| 亚洲欧美日韩一区二区三区在线观看| 日本一卡二卡在线| 国产综合久久久久久久久久久久| 欧美综合在线播放| 亚洲高清影视| 天堂资源在线亚洲资源| 超碰精品在线观看| 国产在线一区二区三区| 深夜av在线| 欧美精品videossex性护士| 9i精品一二三区| 日韩av有码在线| 国产av精国产传媒| 欧美午夜精品免费| 在线能看的av| 亚洲午夜电影在线观看| 中文字幕资源站| 国产拍欧美日韩视频二区| 欲求不满的岳中文字幕| 激情久久久久久久久久久久久久久久| av观看免费在线| 亚洲精品字幕| 久久这里只有精品23| 综合国产在线| 欧美精品一区二区性色a+v| 欧美综合一区| 丝袜美腿玉足3d专区一区| 欧洲亚洲视频| 国产丝袜不卡| 好吊妞国产欧美日韩免费观看网站| 91色p视频在线| 日韩专区视频| 国产一区欧美二区三区| jizzjizz少妇亚洲水多| 国产成人免费av| 欧美在线va视频| 国产精品99久久久久久久久久久久 | 91精品国产91久久久久久| 新版中文在线官网| 欧美成人剧情片在线观看| 男人的天堂在线视频免费观看 | 蜜桃精品在线| 日本乱人伦a精品| xx欧美xxx| 日本国产高清不卡| 国产免费不卡| 国产成人亚洲综合91| 91精品影视| 国产成人拍精品视频午夜网站 | av网址在线播放| 久久99国产精品自在自在app| 91亚洲天堂| 欧美激情久久久久久| 欧美hdxxxxx| 久久久久这里只有精品| 岛国av免费在线观看| 18一19gay欧美视频网站| 综合日韩av| 国产精品福利在线观看| 韩国精品视频在线观看| 国产这里只有精品| 在这里有精品| 精品婷婷色一区二区三区蜜桃| 色狠狠久久av综合| 视频在线99| 亚洲一级淫片| 91九色丨porny丨国产jk| 国产欧美一区二区色老头 | 高清不卡在线观看| 日本少妇毛茸茸| 国产网站一区二区三区| 国产不卡在线观看视频| 亚洲人成在线观看一区二区| 日韩欧美中文字幕视频| 精品国产福利视频| 中文字幕乱码一区二区| 911精品产国品一二三产区| 亚洲精品.www| 亚洲欧美日韩国产成人| 日本在线看片免费人成视1000| 久久综合伊人77777蜜臀| av老司机免费在线| 国产精品久久久久久久9999 | 超碰在线中文字幕| 国产精品福利无圣光在线一区| 国产精品亚洲综合在线观看 | 久久高清免费| 欧日韩免费视频| 青娱乐精品视频在线| 日本黄色三级网站| 99久久国产免费看| 亚洲一二三四五六区| 午夜视频在线观看一区| 不卡av电影在线| 91精品蜜臀在线一区尤物| 亚洲欧美综合一区二区| 日韩中文字幕在线视频播放| 国产嫩草在线视频| 国产精品一区二区三区免费视频 | 亚洲欧美日韩国产yyy| 亚洲国产精品一区| 粉色视频免费看| av在线播放一区二区三区| 黑人と日本人の交わりビデオ| 亚洲午夜视频在线观看| 中文字幕+乱码+中文| 亚洲国产精品视频在线观看| 日本在线免费中文字幕| 奇米四色中文综合久久| 四虎影视国产精品| 欧美日韩亚洲免费| 国模一区二区三区| 午夜视频在线网站| 国产视频一区二区三区在线观看| 麻豆成人在线视频| 欧美放荡的少妇| 狠狠v欧美ⅴ日韩v亚洲v大胸 | 高清电影一区| 精品乱码一区二区三区| 午夜日韩福利| 日本精品一区在线| 国产精品视频看| 无码人妻丰满熟妇精品| 亚洲成人在线视频播放| 日本性爱视频在线观看| 91在线高清免费观看| 成人在线电影在线观看视频| 欧美成人xxxxx| av激情综合网| 九九热国产视频| 精品日韩av一区二区| 最爽无遮挡行房视频在线| 成人国产精品一区| 色喇叭免费久久综合| 国产超碰在线播放| 国产欧美精品国产国产专区| 最新中文字幕一区| 日韩av在线免费播放| а√天堂资源官网在线资源| 国产成人一区二区三区免费看| 亚洲国产不卡| 国产清纯白嫩初高中在线观看性色| 亚洲人一二三区| 精品区在线观看| 欧美黄色www| y111111国产精品久久久| 日本a级片在线播放| 国产高清成人在线| 久艹视频在线观看| 精品国产三级电影在线观看| 亚洲国产精品精华素| 福利视频一区二区三区| 雨宫琴音一区二区在线| 2一3sex性hd| 色综合视频一区二区三区高清| 欧美3p视频在线观看| 国产精品高清免费在线观看| 成人动漫免费在线观看| 亚洲 国产 图片| 亚洲综合自拍偷拍| 先锋av资源站| 国产精品激情av在线播放| 欧美电影免费观看高清| 免费网站在线观看黄| 一区二区三区加勒比av| 污污视频在线免费看| 日韩av电影中文字幕| 日韩免费特黄一二三区| 91人妻一区二区三区| 亚洲福利一二三区| 欧美孕妇孕交xxⅹ孕妇交| 国产精品亚洲欧美导航| 欧美涩涩视频| 无码人妻aⅴ一区二区三区| 欧美视频在线一区二区三区| 国产cdts系列另类在线观看| 成人激情直播| 日韩中文字幕麻豆| 538精品在线视频| 日韩电视剧在线观看免费网站| 51一区二区三区| 久久久久久久久久久综合| 久久久久久麻豆| 国产色综合视频| 欧美一区第一页| 91精品秘密在线观看| 日本黄色片在线播放| 欧美日韩国产三级| 国产精品论坛| 中文字幕黄色大片| 91在线精品一区二区三区| 国产精品亚洲lv粉色| 91精品国产91久久久| 婷婷综合在线| 亚洲理论片在线观看| 精品国内二区三区| 黑人一区二区三区| 缅甸午夜性猛交xxxx| 亚洲视频在线一区| 亚洲aⅴ乱码精品成人区| 国产又爽又黄的激情精品视频|