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

Golang 學習之并發機制

開發 后端
golang 并發機制和其他語言在實現上有什么不同?為什么能做到高效快速?本文做了詳細介紹。

 golang 并發機制和其他語言在實現上有什么不同?為什么能做到高效快速?本文做了詳細介紹。

由于對普通語法的介紹網上資源極多,Go 官方的上手指南 A Tour of Go: https://tour.golang.org/ (請自備梯子)就是極好的例子,我不再打算就語法細節進行詳述。這次,讓我們直切肯綮,從 Go 最大的賣點入手——并發 (Concurrency)。 

  1. func Hello() {  
  2.     fmt.Println("I'm B")        // Output A  
  3.  
  4. go Hello()  
  5. fmt.Println("I'm A")            // Output B 

如果在雙核(及以上)的機器編譯運行上述 Go 代碼,我們能觀測到 A/B 輸出的順序隨著運行次數的不同而不同,也就是說,僅依靠 5 行代碼,我們就創建了兩線并發的程序。相較于 C/C++/Java/Python 等語言為了創建一個并發執行環境所需要的調用 POSIX-API/定義繼承類等繁瑣步驟,Golang 簡單一句 go func()的確給人眼前一亮的感覺。當然了,僅憑語法上的簡潔顯然不足以成為一個編程語言拿來吹噓的資本,下文我們將對在這幾行語句下 Golang 的并發機制和實現進行詳細探索。

一等公民-Goroutine

Goroutine 是 Go 的并發機制中絕對的主角。它代表了指令流及其執行環境,也是被調度的基本單位。宏觀來看,goroutine 類似操作系統中線程的概念(注意這里的類比并不嚴格,下文將會對兩者做出詳細比較):不同線程間共享同一個內存空間,但不共享棧且各自并發執行;同樣地,goroutine 也同內存不同棧,并發運行。

如上圖所示,上文代碼片段第四行的 go Hello()會創建一個新的 goroutine(綠色線條),并開始執行 Hello()函數。需要注意的是,由于主 goroutine(藍色線條)和新創建的 goroutine 擁有并發性,且主 goroutine 在執行 go Hello()時并不會等待被調用函數執行結束,故“I'm A”(主 goroutine 輸出)和“I'm B”(新 goroutine 輸出)可能以任何順序交錯展現。

為何不用線程 (pThread)?

直到現在,我們并不能從 goroutine 中看到任何有別于 thread、從而促成 Golang 編寫者拋棄傳統的線程模型自己造輪子的地方。那么操作系統層面的線程 (pThread) 有什么問題呢?

生命周期開銷太高

線程的創建、銷毀和切換都需要一系列系統調用,而每一個系統調用意味著觸發軟中斷、進入內核態、將寄存器的值全部存入內存、維護相關數據結構、恢復寄存器、返回用戶態等一系列組合拳。這一輪操作不僅十分耗時、還可能讓內存緩存的加速效果大幅度下滑。所以,避免頻繁創建、銷毀線程作為高性能并發的必要條件這一點已成為程序員的共識。

以線程為并發模型的 C/C++/Java 采用線程池的方法來降低線程昂貴的生命周期開銷。既然線程創建/死亡代價高昂,我們何不讓創建的線程永不死亡呢?具體來說,對于每個已經創建但已經完成工作的線程,我們令其休眠,并放進一個資源池中,在下次需要新的線程的時候,我們直接將線程池中休眠的線程拿出來喚醒使用而非新建線程。這樣一來,絕大部分的線程創建/銷毀需求都成功地被線程池吸收了。進一步,通過規定線程池的最大容量,我們可以將花費在線程創建和銷毀上的開銷控制在固定值,例如,常見的 Java Web 應用會設立一個 30~50 大小的線程池來處理 HTTP 請求,并取得非常好的并發效果。

不必要的線程切換

即使線程池很好地砍掉了線程生命周期開銷,操作系統層面的線程依然存在不足:線程的語義在于并行,當線程數超出 CPU 核心數時,操作系統會定時給每個 CPU 核心切換不同的線程,讓他們“看上去”是同時在進行的。當然,這樣的切換同樣需要付出若干中斷、系統調用,以及當前線程的工作集從緩存中被新線程完全抹去的代價。

乍一聽上去這樣的代價是必不可少的,實則不然。由于在絕大部分時候我們的應用都是 I/O 和計算混合的,即,一段時間與硬盤/網絡交互(I/O)、一段時間進行相對密集的內存訪問和計算,而等待 I/O 完成期間該線程處于休眠狀態,CPU 已經會切換到其他線程,即使操作系統不強行打斷并切換處于計算密集期的線程,應用在宏觀上依然顯示出一定并發性。而通過去掉計算密集期的線程切換,整體 CPU 效率得到了有效提升——NodeJS 就是在這樣的哲學下誕生的:單一線程、全異步的 I/O、事件驅動、非搶占式調度(當某一個函數單純進行計算和內存訪問時不會被打斷),在進行 I/O 密集型工作(如網站后臺)時通過將單一 CPU 利用率逼到 100%的方式在效率上力挫幾乎其他所有能利用多線程多核腳本語言。這簡直是本來就特立獨行的 Javascript 對整個編程語言界的同僚豎起的又一根中指。當然了,僅僅能利用單核處理能力的 NodeJS 在處理對計算要求更高的工作上顯然會力不從心,但其給我們的啟示值得注意。

較高的切換開銷

在鎖競爭、協程同步等情況下,頻繁進入內核態的線程模型會放大自身在切換開銷上的劣勢。而用戶態的調度器(如 goroutine 調度器)則可以在用戶態處理這一切,省時省力。另外,由于編程語言能夠更好地對自己語言中的同步原語進行分析,編程語言自己的調度器能夠更好地根據語義對調度進行優化。

Goroutine 調度模型

Go 使用用戶態的調度器對 goroutine 的執行進行控制,從而避免了大部分內核開銷。具體而言,Golang 的調度模型由三部分組成:執行環境 (Executor)、調度器 (Scheduler) 和 goroutine。

執行環境,顧名思義,用來執行代碼。盡管其在抽象概念上應該對應一個 CPU 核心,但由于在用戶態不能接觸硬件資源,故 Go 將其具體實現為線程。當線程數等于 CPU 核心數時,既最大化了 CPU 核心利用率,又最小化了線程切換的開銷,是最理想的情況(當然,實際情況下操作系統還會運行、切換來自其他進程的線程,但這已經超出一個普通程序的控制范疇)。故默認情況下,用于指定執行環境個數的運行時變量 GOMAXPROCS等于 CPU 核心數目。當然,開發者可以根據自己的需求更改該值,當 GOMAXPROCS=1時,Go 的執行模型幾乎等同于 NodeJS。

調度器則是調度模型的核心,它決定了每個執行環境(核)在什么時候執行什么樣的 goroutine。Go 采用任務隊列的方式對 goroutine 進行調度:

如上圖所示,所有 goroutine 作為任務排在任務隊列中,而 scheduler 所做的則是在 executor 空閑時從隊首拿出下一個 goroutine 給其執行。每個任務 (goroutine) 會被 executor 執行到完成或阻塞(如發起 I/O 請求、系統調用、請求一個正在被其他人使用的鎖或自行 yield 計算資源等),在第二種情況下,該 goroutine 既不在 executor 也不在隊列中,而是處于阻塞態被 Scheduler 監視直到阻塞結束重新入隊。值得注意的是,這里與上文提到的“去掉計算密集期的線程切換”的聯系:由于調度器對任務采用非搶占式調度,即在正常計算和內存訪問的情況下 executor 不會放棄當前 goroutine,故多余的 goroutine 切換代價得以被去除。

這樣的任務隊列模型仍然存在不小的問題:由于任務隊列只有一個,為了保證出入隊的原子性,任務分配/加入時需要對整個隊列加互斥鎖,當 goroutine 執行時間短時,頻繁給大量 executor 分配新任務會讓單一隊列成為并行的性能瓶頸。為了解決該問題,Go 采用了多任務隊列的方式進行任務調度:

如上圖所示,在多任務調度模型中,每個 executor 均有一個自己對應的任務隊列。在正常情況下,每個 executor 從自己的隊列中拿 goroutine,并將生成的新 goroutine 放進自己隊列隊尾。分布式結構可能帶來的問題是顯而易見的:如果任務在隊列的分布不均勻會導致計算資源的浪費,如上圖中的 executor3,如果缺乏其他措施,該核會因為對應隊列沒有任務而空閑。對于該問題,Go 的解決方法是引入“偷任務”機制:當 Scheduler 發現某隊列無任務可用時,會從其他隊列里“偷”一部分任務過來。由于偷任務的代價較高(需要鎖兩個隊列),Scheduler 會爭取一次性偷足夠多的任務以降低未來偷任務的頻率。

而對于處于阻塞狀態的 goroutine,Scheduler 需要監視其脫離阻塞狀態并重新入隊。Goroutine 被阻塞的原因大體分兩種:

  •     阻塞 I/O 或系統調用。由于底層實現限制,該類阻塞需要一個線程顯式執行相應的 syscall 并等待調用返回。在這種情況下,Scheduler 會新建一個線程執行該 syscall,并在返回后通知 Scheduler。同樣地,為了節省開銷,該線程被維護在線程池中。值得注意的是,該類線程由于整個生命周期都幾乎在等待阻塞(阻塞結束后立即通知 Scheduler 而后結束),而阻塞的線程是不參與操作系統線程切換的,故其并不會帶來太大的線程切換開銷。當然,如果借鑒 NodeJS、盡可能用異步版本 api 替換同步版,則可以省去線程池操作,進一步優化性能(Go 是否采用該優化尚存疑)。
  •  內部同步機制,Goroutine 因為調用了 Go 內部同步機制(channel、互斥鎖、wait group、conditional variable 等)而阻塞。對于此類阻塞,由于同步機制的語義是 Go 定義從而對 Scheduler 透明的,Scheduler 可以分析出阻塞依賴,從而將監視該阻塞狀態的任務交給其依賴的 goroutine。例如,goroutine A 請求了一個正被 goroutine B 獲取了的互斥鎖,從而陷入阻塞,那么 Scheduler 可以在 goroutine B 釋放該鎖時由對應的 executor 將 goroutine A 喚醒并加入隊列。在這整個過程中不需要引入新的線程。

以上便是 Golang Scheduler 的大致工作邏輯,在各個組件的相互配合下,一個高性能、支持調度成千上萬 goroutine 的并發環境就此搭建起來。

總結和啟發

從 Golang 的并發機制中我們可以得到如下幾點啟發:

  •  系統調用和內核態是昂貴的,用戶態的調度器擁有更好的性能。
  •  由于頻繁進行不必要的切換,線程并不是合適的并發執行基本單位;相反,將線程作為執行資源 (CPU) 的抽象、為一個 CPU 核心建立一個線程作為執行器則是一個很不錯的主意。
  •  單一任務隊列在任務短而多時劣勢明顯,分布式隊列+任務偷取能夠較好的解決問題。

可以說,Golang 的并發機制是 NodeJS 的普適版,擁有能夠更好利用多核計算力的優勢;和 采用 OS 線程、阻塞 I/O、GIL 的 Python 并發模式 相比則更是云泥之別。正是更為精巧的并發機制和簡單的并發原語,使得 Concurrency 成為 Go 語言最大的賣點。

需要指出的是,Go 所采用的一切技術都并非原創—— go func()的同步原語與 Cilk 十分類似,分布式任務隊列也多少有模仿 Cilk/OpenMP 的意味,如果非要說不同之處,大概在于 Go 是一個原生支持該功能的完整編程語言,而另外兩者只是 C/C++的語法擴展插件吧。 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2022-04-13 08:23:31

Golang并發

2021-07-28 13:03:42

Golang熔斷語言

2017-10-19 15:34:52

Hadoop技術機制學習

2010-09-26 16:55:31

JVM學習筆記

2010-01-15 09:15:09

Scala Actor并發

2021-06-29 23:40:19

Golang語言并發

2021-02-22 11:30:07

Golang 1.16ModuleGolang

2021-09-18 06:56:01

JavaCAS機制

2023-05-22 09:27:11

GMPGolang

2023-08-21 07:34:37

GolangGMP

2023-11-20 22:44:09

Golang并發

2025-01-15 09:13:53

2022-08-21 07:30:55

程序并發Golang編碼

2025-03-26 00:55:00

2025-10-29 04:11:00

2013-01-10 11:13:38

Golang WebRevel測試Web開發

2022-10-17 08:07:13

Go 語言并發編程

2021-07-03 17:44:34

并發高并發原子性

2009-06-02 10:32:30

Oracle并發處理

2024-12-09 00:00:10

點贊
收藏

51CTO技術棧公眾號

在线观看国产一级片| 精品日韩欧美| 538精品在线观看| 97品白浆高清久久久久久| 五月天视频一区| 日韩免费一区二区三区| 国产精品伊人久久| 日韩亚洲精品在线| 自拍偷拍亚洲欧美| 国产调教打屁股xxxx网站| 韩日成人影院| 日韩理论片在线| 精品一区二区视频| 国产精品无码久久久久成人app| 在线不卡视频| 日韩在线精品一区| 日本黄色免费观看| 国产精品3区| 欧美午夜精品久久久久久人妖 | 国产精品成人一区二区不卡| 亚洲第一男人av| 在线观看免费成人av| 免费在线观看的电影网站| www.66久久| 川上优av一区二区线观看| 亚洲av中文无码乱人伦在线视色| 午夜国产精品视频免费体验区| 亚洲色图日韩av| 亚洲精品国产成人av在线| 国产精品亲子伦av一区二区三区| 精品美女国产在线| 久久久久久久久影视| 爱久久·www| 2017欧美狠狠色| 91网站在线免费观看| 少妇又紧又色又爽又刺激视频 | 午夜免费福利在线| 手机在线观看av网站| 一级中文字幕一区二区| 一区二区视频在线免费| 国产精品99999| 1234区中文字幕在线观看| 日日天天久久| 欧美xfplay| 91丨porny丨九色| 成人国产精品久久| 欧美精品久久99久久在免费线 | 日韩性感在线| 欧洲亚洲在线| 久久青草欧美一区二区三区| 精品欧美日韩| 日韩三级电影网| 91麻豆国产在线观看| 国产视频99| 天堂国产一区二区三区| 99在线精品免费| 国产伦精品一区二区三区四区免费 | 欧美成人激情免费网| 永久免费看片在线观看| 日韩精品视频在线看| 欧美大片在线观看一区| 亚洲熟妇一区二区| 国产精品丝袜在线播放| 亚洲国产古装精品网站| 人妻熟女aⅴ一区二区三区汇编| 欧美激情极品| 亚洲日韩欧美视频一区| 黑人と日本人の交わりビデオ| 成人久久久久| 久青草国产97香蕉在线视频| 五月天丁香激情| 亚洲第一黄网| 国产精品27p| 一级片免费网站| 国产精品一品二品| 国产精品视频入口| 免费国产在线观看| 中文字幕在线不卡| 日韩在线视频在线| 这里有精品可以观看| 在线观看亚洲a| 在线视频观看91| 黄色欧美网站| 亚洲最新在线视频| 国产精品成人免费观看| 亚欧成人精品| 成人激情免费在线| 黄色av中文字幕| 国产亚洲综合性久久久影院| 永久免费精品视频网站| 国产丝袜精品丝袜| 在线观看网站黄不卡| 99九九精品视频| 欧美日韩夜夜| 久久久黄色av| 可以在线观看av的网站| 久久精品国产99久久6| 国产精品一区二区三区免费观看| 三级视频网站在线| 亚洲欧美另类图片小说| 亚洲中文字幕无码专区| 亚洲老司机网| 亚洲欧美国产一本综合首页| 日韩影院一区二区| 日韩电影在线观看一区| 99re国产视频| 91精品国产综合久久久久久豆腐| 夜夜嗨av一区二区三区网页| 午夜国产一区二区三区| 动漫视频在线一区| 日韩视频在线免费| 日本熟女毛茸茸| 粉嫩aⅴ一区二区三区四区五区| 午夜精品亚洲一区二区三区嫩草| 51漫画成人app入口| 7777精品伊人久久久大香线蕉的| 手机av免费看| 影音先锋久久| 亚洲xxxx在线| 91福利在线视频| 一本色道久久综合精品竹菊| 无码人妻一区二区三区免费n鬼沢| 欧美日中文字幕| 日韩美女视频免费在线观看| 欧美 日韩 国产 成人 在线| 国产精品久久久久久久久免费丝袜| 欧美成人xxxxx| 91久久精品无嫩草影院| 久久人体大胆视频| 免费一级特黄录像| 91传媒理伦片在线观看| 日韩手机在线| 久久久久久国产精品久久| 国产老女人乱淫免费| 欧美韩国日本一区| 日本成人在线免费视频| 秋霞蜜臀av久久电影网免费| 欧美精品成人91久久久久久久| 国产精品久久久久精| 中文字幕国产一区二区| 91n.com在线观看| 经典一区二区| 国产精品mp4| 国产天堂素人系列在线视频| 欧美性xxxx极品hd满灌| 国内精品久久99人妻无码| 日韩视频在线一区二区三区| 国产精品视频免费一区| 玖玖在线播放| 日韩精品在线观看网站| 久久国产黄色片| 久久久美女艺术照精彩视频福利播放| 五十路熟女丰满大屁股| 开心激情综合| 国产91精品黑色丝袜高跟鞋| 国产综合在线播放| 午夜精品福利一区二区三区蜜桃| 日韩综合第一页| 国产亚洲综合精品| 欧美日韩电影一区二区三区| 成人免费福利| 精品国产网站地址| 精品人妻一区二区三区含羞草 | 久久男人资源站| 国产精品黄网站| 57pao成人永久免费视频| 国产在线电影| 欧美人伦禁忌dvd放荡欲情| 黄色一级片中国| 成人午夜在线免费| 青青在线视频观看| 视频在线不卡免费观看| 91在线播放视频| 青青青免费在线视频| 国产香蕉精品视频一区二区三区| 亚洲专区第一页| 亚洲综合免费观看高清完整版在线| 91玉足脚交白嫩脚丫| 日韩制服丝袜av| 亚洲成年人专区| 欧洲亚洲视频| 国产日韩欧美中文| av资源中文在线| 在线视频中文亚洲| 性生交大片免费看女人按摩| 一本大道久久精品懂色aⅴ| 日日碰狠狠添天天爽| 成a人片国产精品| 9久久婷婷国产综合精品性色| 久久高清免费| 狠狠色狠狠色综合人人| 欧美性www| 性色av一区二区咪爱| 69久久精品| 亚洲激情在线观看视频免费| 亚洲一区二区视频在线播放| 性久久久久久久久久久久| www.xx日本| 久久久久一区二区三区四区| 三上悠亚 电影| 日韩av高清在线观看| 国产91在线亚洲| 凹凸成人精品亚洲精品密奴| 国产91亚洲精品一区二区三区| 精品三区视频| 2019中文字幕在线观看| а√中文在线8| 国产亚洲精品一区二555| 亚洲精品911| 欧美喷水一区二区| 中文字幕在线欧美| 亚洲成在线观看| 中日韩一级黄色片| 国产清纯美女被跳蛋高潮一区二区久久w| 国产chinesehd精品露脸| 久久精品二区亚洲w码| 日本a级片免费观看| 在线看片欧美| www.国产亚洲| 99精品综合| 色一情一乱一伦一区二区三区| 欧美有码在线| 国产欧美一区二区三区另类精品| 成人97精品毛片免费看| 国产中文字幕日韩| 成人四虎影院| 国产精品久久久精品| 日本不卡网站| 久久久久成人网| 色呦呦在线视频| 久久国产精品电影| 久久77777| 日韩亚洲第一页| 95在线视频| 色婷婷综合成人av| 在线观看完整版免费| 在线精品91av| 色欧美激情视频在线| 中文字幕视频在线免费欧美日韩综合在线看| 五月婷婷免费视频| 亚洲国产三级网| 欧美 日韩 国产 成人 在线 91| 精品国产乱码久久久久久牛牛| 成人av免费播放| 希岛爱理一区二区三区| 欧美专区亚洲专区| 国产成人精品777777| 欧美性色19p| 999视频在线| 欧美在线观看视频一区二区三区| 不卡av电影在线| 欧美亚洲高清一区二区三区不卡| 日韩不卡高清视频| 欧美日韩免费在线视频| 一区二区三区午夜| 欧美一级日韩一级| 国产 欧美 自拍| 亚洲精品丝袜日韩| 国产视频网站在线| 视频直播国产精品| 伊人福利在线| 性欧美视频videos6一9| 欧美一级大黄| 国产精品色婷婷视频| 国产高清精品二区| 精品久久久久亚洲| 精品欧美激情在线观看| 在线观看免费黄色片| 黑丝一区二区三区| 欧美日韩在线中文| 青椒成人免费视频| 国产大学生av| 久久久美女艺术照精彩视频福利播放| 国产一级久久久久毛片精品| 国产精品情趣视频| 久一区二区三区| 色婷婷亚洲一区二区三区| 亚洲一区二区色| 亚洲国产天堂久久国产91| 大地资源中文在线观看免费版| 欧美成aaa人片免费看| 欧美调教sm| 成人国产精品一区二区| 精品视频高潮| 亚洲一区二区在线看| 精品999网站| 国产免费又粗又猛又爽| 福利电影一区二区| 国产性猛交xx乱| 亚洲成人动漫在线观看| 国产日韩久久久| 精品国产不卡一区二区三区| 国产专区在线播放| 欧美激情久久久久久| 香蕉成人影院| 国产一区在线免费| 亚洲v在线看| 日本va中文字幕| 成人国产亚洲欧美成人综合网| 亚洲一级黄色录像| 欧美日韩亚洲高清| 99免费在线视频| 在线观看国产欧美| 精精国产xxxx视频在线野外 | 中文字幕乱码中文字幕| 亚洲第一区第二区| 91中文在线| 国产精品人成电影| 亚洲另类春色校园小说| 日韩精品一区二区三区四| 蜜乳av一区二区| 国产色视频一区二区三区qq号| av成人男女| 相泽南亚洲一区二区在线播放| 亚洲大黄网站| 日本中文字幕在线不卡| 国产精品欧美一区二区三区| 天天综合天天干| 欧美成人精品二区三区99精品| 麻豆视频网站在线观看| 国产精品第二页| 亚州国产精品| 日韩欧美国产综合在线| 国产大陆a不卡| 91视频综合网| 欧美精品亚洲一区二区在线播放| 日本在线丨区| 88国产精品欧美一区二区三区| 日韩有吗在线观看| 六月婷婷激情网| 国产一区二区三区免费看| 三级影片在线观看| 欧美性感一区二区三区| 国产日本在线| 国产精品都在这里| 欧美色图激情小说| 每日在线更新av| 99re成人精品视频| 久久久久久久久久免费视频| 精品福利一二区| 爱福利在线视频| 国产欧美在线一区二区| 亚洲精选一区| 最新中文字幕视频| 色婷婷综合久久久| 国产sm调教视频| 91久久夜色精品国产九色| 妞干网在线免费视频| 久久久久久9999| 国产裸体美女永久免费无遮挡| 一区二区在线视频播放| 国产一区一一区高清不卡| 婷婷四月色综合| 国产综合色精品一区二区三区| 四虎永久免费在线| 日韩欧美国产一区在线观看| 日韩经典av| 久久精品国产美女| 视频一区二区不卡| 一本一本久久a久久| 日韩一区二区电影网| free性欧美16hd| 欧美不卡在线一区二区三区| 日韩**一区毛片| 男人在线观看视频| 精品国产网站在线观看| 日本不卡1234视频| 亚洲人成网站在线观看播放 | 国产欧美va欧美va香蕉在线| 国产精品福利在线观看播放| 香蕉视频免费网站| 欧美性猛交xxxx乱大交3| 91精品国产91久久久久游泳池| 亚洲永久在线观看| 亚洲美洲欧洲综合国产一区| 最近中文字幕在线mv视频在线 | 久久久老熟女一区二区三区91| 天天综合网 天天综合色| 国产午夜视频在线观看| 成人欧美一区二区三区在线| 精品99视频| 亚洲精品国产精品乱码在线观看| 欧美成人一区二区三区片免费| 美女搞黄视频在线观看| 亚洲一区3d动漫同人无遮挡| 成人免费观看男女羞羞视频| 日韩精品一区不卡| 欧美成人高清视频| 免费成人结看片| 杨幂一区二区国产精品| 色天天综合色天天久久| a视频在线播放| 日韩av电影免费播放| 国产黑丝在线一区二区三区| 国产一级片免费视频| 欧美高跟鞋交xxxxhd| 欧美色图在线播放| 日本一级片在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 蜜桃av一区二区在线观看|