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

多線程任務開發范例-TaskPool

開發 前端
任務池(Taskpool)為應用程序提供一個多線程的運行環境,可以使用任務池API創建后臺任務(Task),并對所創建的任務進行如任務執行、任務取消的操作。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

概念介紹

任務池(taskpool)為應用程序提供一個多線程的運行環境,可以使用任務池API創建后臺任務(Task),并對所創建的任務進行如任務執行、任務取消的操作。使用任務池,無需關心線程實例的生命周期,提升開發體驗,還能降低整體資源的消耗、提高系統的整體性能。

API接口

任務池模塊提供的功能非?;A,只支持任務構造,任務執行,任務取消等3類接口。關于任務池(taskpool)API能力詳細信息,請參考@ohos.taskpool。本節只進行關鍵接口解讀。

Task構造函數

使用線程池運行后臺任務前,可以先構造一個Task實例。Task構造函數如下:

constructor(func: Function, …args: unknown[])

其中,參數解釋:

參數名

類型

必填

說明

func

Function

任務執行需要傳入函數,支持的函數返回值類型請查序列化支持類型。

args

unknown[]

任務執行傳入函數的參數,支持的參數類型請查序列化支持類型。默認值為undefined。

我們來看一個構造的示例。

@Concurrent
function printArgs(args) {
    console.log("printArgs: " + args);
    return args;
}

let task = new taskpool.Task(printArgs, "this is my first Task");

注意:上述實例代碼是官方API提供的,實際上并不可用,使用裝飾器@Concurrent會報錯。實際上使用的是如下代碼:

function concurrentTask(durationMs: number) {
  "use concurrent"
  console.info("[concurrentTask] task start, the args is " + durationMs)
  setTimeout(() => {
    console.info("[concurrentTask] task end ")
  }, durationMs)
  console.info("[concurrentTask] task return")
  return '[concurrentTask] returned'
}

function createTask() {
  let task = new taskPool.Task(concurrentTask, 10 * 1000)
  console.info("[createTask] created successfully")
  return task
}

執行異步函數

將待執行的函數放入taskpool內部任務隊列等待,等待分發到工作線程執行。此種方式執行的情況下,沒有創建任務,所以不可取消任務。后文將介紹的taskpool.cancel函數需要傳入taskpool.Task參數。
接口定義如下,其中的參數不再解釋,和Task構造函數的參數一樣。

execute(func: Function, …args: unknown[]): Promise<unknown>

示例代碼如下:

@Concurrent
function printArgs(args) {
    console.log("printArgs: " + args);
    return args;
}

async function taskpoolExecute() {
  let value = await taskpool.execute(printArgs, 100);
  console.log("taskpool result: " + value);
}
...
taskpoolExecute();

執行Task任務

將創建好的任務放入taskpool任務池里等待,等待分發到工作線程執行。當前執行模式可嘗試調用cancel進行任務取消。接口定義如下:

execute(task: Task, priority?: Priority): Promise<unknown>

其中,參數如下:

參數名

類型

必填

說明

task

Task

需要在任務池中執行的任務。

priority

Priority

等待執行的任務的優先級(暫未支持)。

示例代碼如下:

@Concurrent
function printArgs(args) {
    console.log("printArgs: " + args);
    return args;
}

async function taskpoolExecute() {
  let task = new taskpool.Task(printArgs, 100);
  let value = await taskpool.execute(task);
  console.log("taskpool result: " + value);
}

taskpoolExecute();

取消Task任務

取消任務池中的任務。在Task構造實例后直接調用cancal接口會找不到要取消的任務,需要調用execute接口后,才會放入任務池,調用cancel接口才有意義。

接口定義如下:

cancel(task: Task): void

其中,參數如下:

參數名

類型

必填

說明

task

Task

需要取消執行的任務。

示例代碼如下:

@Concurrent
function printArgs(args) {
    console.log("printArgs: " + args);
    return args;
}

async function taskpoolCancel() {
  let task = new taskpool.Task(printArgs, 100);
  taskpool.execute(task);
  try {
    taskpool.cancel(task);
  } catch (e) {
    console.log("taskpool.cancel occur error:" + e);
  }
}

taskpoolCancel();

實現場景

我們主要為了體驗線程池的使用,實現任務創建、任務執行和任務取消的功能。為了簡化,相關輸出使用console控制輸出即可。

設計思路

簡化界面實現,只需要簡單地包含一個text和三個button。text用于展示接口調用信息,不同的button按鈕被點擊后觸發調用不同的接口。通過設置日志查看操作執行情況。

開發步驟

UI界面實現

代碼非常簡單,使用DevEco Studio創建一個Empty Ability空工程后,加3個按鈕就行。

“Create Task"按鈕會創建一個任務。創建的Task實例會賦值給組件的變量,創建任務的代碼如下。現在存在一個問題需要確認,@concurrent裝飾器不知道如何使用,
當前使用的"use concurrent”。需要確認官方文檔是否存在問題。

function concurrentTask(durationMs: number) {
  "use concurrent"
  console.info("[concurrentTask] task start, the args is " + durationMs)
  setTimeout(() => {
    console.info("[concurrentTask] task end ")
  }, durationMs)
  console.info("[concurrentTask] task return")
  return '[concurrentTask] returned'
}

function createTask() {
  let task = new taskPool.Task(concurrentTask, 10 * 1000)
  console.info("[createTask] created successfully")
  return task
}

"Execute Task"按鈕會執行一個任務。組件的變量持有任務,該按鈕可以持續點擊,反復執行任務。

"Cancel Task"按鈕會取消一個任務。如果認為沒有調用execute接口,不在線程池里,取消會阿伯錯;如果任務正在執行中,再去取消也會報錯。實際上運行,沒有得到想要的效果,需要進一步確認。

UI代碼

entry\src\main\ets\pages\Index.ets文件片段如下:

task: taskPool.Task = null
   ...
  Column() {
	Text(this.message)
	  .fontSize(20)
	  .fontWeight(FontWeight.Bold)
	Blank()
	Row() {
	  Button("Create Task").onClick(() => {
		this.task = createTask()
		this.message = "Task Created"
	  })
	  Button("Execute Task").onClick(() => {
		executeTask(this.task)
		this.message = "Task Executed"
	  })
	  Button("Cancel Task").onClick(() => {
		cancelTask(this.task)
		this.message = "Task Cancel involved"
	  })
	}

  }

執行任務代碼實現

我們再執行任務代碼如何實現。

我們從上文知道,taskPool.execute接口有兩種方式,可以傳入異步函數和參數,也可以傳入task實例和優先級參數。

此處,我們使用第二種方法,傳入task實例和優先級參數。任務池模塊尚未支持優先級,該參數也可以省略。

執行任務代碼片段如下:

function executeTask(task: taskPool.Task) {
  console.info("[executeTask] executing")
  try {
    taskPool.execute(task, taskPool.Priority.HIGH).then(() => {
      console.info("[executeTask] executed successfully")
    })
  } catch (e) {
    console.error("[executeTask] execute failed, " + e.toString())
  }
}

取消任務代碼實現

我們再看下取消任務的代碼如何實現。

如果沒有通過調用execute接口,沒有放入任務池的task,執行cancel函數時,會報異常,畢竟在線程池是不存在的。

然后模擬一個延時操作,再去調用cancel函數。

期望可以正常取消任務,實際上,任務沒有被取消,也沒有報異常。這里就很奇怪,需要繼續調查原因。

取消任務代碼片段:

function cancelTask(task: taskPool.Task) {
  console.info("[cancelTask] canceling ")
  try {
    taskPool.execute(task, taskPool.Priority.HIGH)
    let start = new Date().getTime()
    // 延時1s,確保任務已執行
    while (new Date().getTime() - start < 1000) {
      continue
    }
    taskPool.cancel(task)
  } catch (e) {
    console.error("[cancelTask] cancel failed" + e.toString())
  }
}

運行測試效果

代碼編寫完畢,可以測試運行查看效果。推薦在模塊級配置文件entry\build-profile.json5中,修改運行時為"HarmonyOS",這樣就可以在DevEco Studio中使用Simulator模擬器進行運行測試,手頭沒有設備也可以輕松體驗OpenHarmony應用開發。分別點擊按鈕,日志輸出如下:

07-30 22:28:28.357 4214-7232/com.example.taskpooldemo I 0FEFE/JsApp: [createTask] created successfully
07-30 22:28:30.576 4214-7232/com.example.taskpooldemo I 0FEFE/JsApp: [executeTask] executing
07-30 22:28:30.576 4214-7256/com.example.taskpooldemo I 0FEFE/JsApp: [concurrentTask] task start, the args is 10000
07-30 22:28:30.576 4214-7256/com.example.taskpooldemo I 0FEFE/JsApp: [concurrentTask] task return
07-30 22:28:30.577 4214-7232/com.example.taskpooldemo I 0FEFE/JsApp: [executeTask] executed successfully
07-30 22:28:37.602 4214-7232/com.example.taskpooldemo I 0FEFE/JsApp: [cancelTask] canceling
07-30 22:28:37.608 4214-7256/com.example.taskpooldemo I 0FEFE/JsApp: [concurrentTask] task start, the args is 10000
07-30 22:28:37.609 4214-7256/com.example.taskpooldemo I 0FEFE/JsApp: [concurrentTask] task return
07-30 22:28:38.607 4214-7232/com.example.taskpooldemo E 0FEFE/JsApp: [cancelTask] cancel failedBusinessError: The task does not exist when it is canceled, taskpool:: can not find the task
07-30 22:28:40.580 4214-7256/com.example.taskpooldemo I 0FEFE/JsApp: [concurrentTask] task end
07-30 22:28:47.608 4214-7256/com.example.taskpooldemo I 0FEFE/JsApp: [concurrentTask] task end

注意事項

理論上,您可以使用任務池API創建數量不受限制的任務。當同一時間待執行的任務數量大于任務池工作線程數量,任務池會根據負載均衡機制進行擴容,增加工作線程數量,減少整體等待時長。同樣,當執行的任務數量減少,工作線程數量大于執行任務數量,部分工作線程處于空閑狀態,任務池會根據負載均衡機制進行縮容,減少工作線程數量。遺憾的是,負載均衡機制暫未支持。

創建的同一優先級任務的執行順序可以由您決定,任務真實執行的順序與您調用任務池API提供的任務執行接口順序一致。任務默認優先級是taskPool.Priority.MEDIUM。遺憾的是,任務優先級機制暫未支持,可以忽略。

@concurrent裝飾器如何使用,需要繼續確認。另外,官方文檔中提到:僅支持在Stage模型且module的compileMode為esmodule的project中使用taskpool api。compileMode設置為什么看起來并不影響什么,需要進一步確認。

最后,任務池模塊現在屬于基礎版本,接口支持只支持簡單的任務執行和取消功能,查詢運行狀態等接口也不支持。任務一旦執行,不支持取消。不建議您在任務中執行阻塞操作,特別是無限期阻塞操作,長時間的阻塞操作占據工作線程,可能會阻塞其他任務調度,影響您的應用性能。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-08-01 16:35:48

鴻蒙ArkUI應用開發

2010-02-04 10:19:39

C++多線程

2021-09-09 07:16:00

C#多線程開發

2011-05-31 13:29:40

Android 多線程

2015-11-18 18:56:36

Java多線程處理

2015-07-22 09:39:38

IOS多線程同步

2015-07-22 09:51:51

iOS開發線程

2009-08-13 09:07:36

Java多線程

2009-07-17 17:29:13

多任務多線程

2019-09-26 10:19:27

設計電腦Java

2022-10-11 08:00:47

多線程開發技巧

2022-04-14 11:44:25

LiteOS線程鴻蒙

2010-03-18 10:36:23

Java語言規范

2015-07-08 09:56:25

Notificatio多線程

2011-08-12 10:09:23

iPhone開發多線程

2011-08-18 17:07:23

IOS開發多線程NSInvocatio

2009-09-22 17:21:24

線程局部變量

2009-03-12 10:52:43

Java線程多線程

2011-08-08 13:50:29

iPhone開發 NSOperatio 多線程

2009-04-24 09:14:20

.NET多線程鎖機制
點贊
收藏

51CTO技術棧公眾號

五月天久久网站| 免费污视频在线一区| 懂色av中文字幕一区二区三区 | aaaa黄色片| 在线看片国产福利你懂的| 国产精品久久久久久久久免费樱桃| 亚洲在线免费看| 黄色片网站在线免费观看| 日韩片欧美片| 日韩电影中文字幕| а 天堂 在线| 香蕉成人影院| 午夜精品福利视频网站| 亚洲 欧洲 日韩| 欧美一区二区少妇| 国产乱子轮精品视频| 国产91色在线| 999这里只有精品| 艳女tv在线观看国产一区| 亚洲精品天天看| 久久无码专区国产精品s| 97精品国产99久久久久久免费| 一区二区三区免费网站| 亚洲三级一区| 国产小视频在线| 成人免费视频免费观看| 92看片淫黄大片欧美看国产片| 无码人妻丰满熟妇区bbbbxxxx | 久久97久久97精品免视看| 一区二区三区伦理片| 8x国产一区二区三区精品推荐| 欧美日韩一区三区| 妞干网在线免费视频| av今日在线| 伊人色综合久久天天| 在线观看一区二区三区三州| 精品电影在线| 91麻豆国产福利在线观看| 国产精品区免费视频| 99热这里只有精品1| 奇米影视一区二区三区| 国产成人97精品免费看片| 欧美一级片免费在线观看| 激情成人亚洲| 欧美丰满少妇xxxx| 欧美成人aaa片一区国产精品| 欧美顶级大胆免费视频| 中文字幕亚洲在线| 大胸美女被爆操| 欧美亚洲激情| 视频在线观看99| 亚洲а∨天堂久久精品2021| 精品一区毛片| 亚洲女人被黑人巨大进入al| 精品无码人妻一区| 国产传媒欧美日韩成人精品大片| 日韩精品一区二区三区第95| 北岛玲一区二区| 一区二区三区视频免费观看| 亚洲欧洲激情在线| eeuss中文字幕| 99久久激情| 欧美乱大交xxxxx| 国产无遮挡又黄又爽又色| 在线精品亚洲| 国产a∨精品一区二区三区不卡| 欧美成人一区二区三区四区| 日韩二区三区四区| 91精品久久久久久| 午夜精品久久久久久久第一页按摩 | 在线视频日韩一区| 日韩电影精品| 欧美精品一区二区三区蜜桃| 91视频啊啊啊| 清纯唯美亚洲综合一区| 久久精品国产一区二区电影| 国产亚洲精品成人| 久久九九免费| 91啪国产在线| 视频福利在线| 亚洲欧美在线视频观看| 草b视频在线观看| 小黄鸭精品aⅴ导航网站入口| 欧美私人免费视频| 伦伦影院午夜理论片| 欧美天堂社区| 久久在线免费观看视频| 日韩av免费网址| 美洲天堂一区二卡三卡四卡视频| 91欧美精品午夜性色福利在线| 黑人精品一区二区三区| 国产欧美在线观看一区| 日本大胆人体视频| 免费福利视频一区二区三区| 欧美另类久久久品| 国产精品揄拍100视频| 四虎成人av| 欧美一级视频在线观看| 一道本无吗一区| 91丨porny丨户外露出| 亚洲一区二区在| 在线看的毛片| 欧美不卡视频一区| www.涩涩爱| 一本色道久久综合亚洲精品不卡| 国产主播喷水一区二区| 香蕉视频国产在线| 一区二区三区四区视频精品免费| 久久久久人妻精品一区三寸| 国产精品视频一区视频二区| 亚洲欧洲高清在线| 2021亚洲天堂| 男人的天堂亚洲一区| 精品不卡在线| 日本三级在线观看网站| 欧美日韩黄视频| 国产国语性生话播放| 欧美激情综合| 成人性生交xxxxx网站| 撸视在线观看免费视频| 亚洲一区二区影院| www.超碰97.com| 欧美伦理影院| 国产成人精品999| 桃花色综合影院| 亚洲国产欧美一区二区三区丁香婷| 天天爱天天操天天干| 久久99国产精一区二区三区| 久久久久久久网站| 不卡的日韩av| 一区二区理论电影在线观看| 超碰成人在线播放| 成人午夜av| 国产精品久久不能| 国产无套粉嫩白浆在线2022年| 欧美视频中文字幕在线| 人妻 日韩 欧美 综合 制服| 欧美黄色aaaa| 国产成人精品日本亚洲11| 成人ww免费完整版在线观看| 欧美日韩精品福利| 欧美亚洲色综久久精品国产| 青青草国产成人av片免费| 日韩成人av网站| 欧美性理论片在线观看片免费| 日韩精品在线观看一区| 女人十八岁毛片| 国产亚洲一区二区三区四区| 毛葺葺老太做受视频| 你微笑时很美电视剧整集高清不卡| 91成品人片a无限观看| 无码精品黑人一区二区三区| 狠狠色狠狠色综合日日五| 无套内谢大学处破女www小说| 国产精品久久久久久久免费软件| 九色91在线视频| 在线免费日韩片| 亚洲欧美日韩国产成人| 国产一级淫片a视频免费观看| 久久久三级国产网站| 免费观看日韩毛片| 欧美一二区在线观看| 国产一区玩具在线观看| 看女生喷水的网站在线观看| 日韩小视频在线观看专区| 国产一级大片在线观看| 99re热这里只有精品视频| 男人女人黄一级| 国产精品久久久久久影院8一贰佰| 亚洲xxxx视频| a级片在线免费| 亚洲视频视频在线| 国产又粗又长视频| 亚洲国产va精品久久久不卡综合| 9.1成人看片| 久久国产夜色精品鲁鲁99| www.欧美黄色| 九色精品91| 91人成网站www| 啊啊啊久久久| 日韩在线中文视频| 欧美一区,二区| 欧洲色大大久久| 放荡的美妇在线播放| 91在线视频观看| wwwwwxxxx日本| 中文精品视频| 最近看过的日韩成人| 欧美美女在线直播| 96国产粉嫩美女| 日韩影片中文字幕| 欧美国产日韩在线| www亚洲人| 亚洲精品一线二线三线| 亚洲午夜无码久久久久| 亚洲线精品一区二区三区| аⅴ天堂中文在线网| 成人丝袜视频网| 美女在线视频一区二区| 伊人成年综合电影网| 亚洲精品久久区二区三区蜜桃臀| 乱中年女人伦av一区二区| 国产精品视频网址| 日韩伦理精品| 欧美寡妇偷汉性猛交| 国产粉嫩一区二区三区在线观看| 精品国产一区二区三区忘忧草| 中国精品一区二区| 福利精品视频在线| 免费网站观看www在线观| 国产精品欧美一级免费| 人妻无码一区二区三区| 国产成人在线观看| 五月激情婷婷在线| 免费成人在线观看| 黄色a级片免费| 亚洲一区二区三区四区五区午夜| 久久久久福利视频| 久久高清精品| 亚洲ai欧洲av| 九九免费精品视频在线观看| 都市激情久久久久久久久久久| 开心久久婷婷综合中文字幕| 日本成人黄色片| 国产传媒在线观看| 性欧美视频videos6一9| 18在线观看的| 超碰精品一区二区三区乱码| 在线免费看黄网站| 中文字幕国产亚洲2019| 国产黄色免费在线观看| 亚洲天堂av图片| 国产在线高清| 亚洲丝袜av一区| 成人资源www网在线最新版| 亚洲最新av在线网站| 东热在线免费视频| 伊人久久五月天| 成人不用播放器| 国产一区二区三区毛片| 国产在线观看免费| 在线日韩精品视频| 国产h在线观看| 中文字幕日韩精品在线观看| 在线观看完整版免费| 色婷婷成人综合| 调教视频免费在线观看| 日韩有码在线播放| 国产一二三区在线观看| 九九久久综合网站| 9999在线视频| 51精品国产黑色丝袜高跟鞋| 欧美gay视频| 国产精品久久久久久久久久久新郎| 韩国三级一区| 成人激情视频网| 亚洲欧洲国产精品一区| 国产欧美日韩在线播放| 亚洲美女久久| 亚洲国产日韩欧美| 中文字幕亚洲精品乱码| 日本中文字幕在线视频观看| 香蕉精品999视频一区二区| 日韩av片网站| 国产一区二区三区黄视频 | 国产免费播放一区二区| 亚洲精品一区二区三区蜜桃久 | 国产成人无码a区在线观看视频| 国产日韩欧美| 日本特黄a级片| 国产成人av一区| 亚洲精品理论片| 国产精品福利影院| 久久久99精品| 色域天天综合网| 国产口爆吞精一区二区| 亚洲国产成人一区| 成人免费黄色网页| 欧美大片免费看| 日韩精品影片| 波多野结衣精品久久| 蜜桃a∨噜噜一区二区三区| 一级全黄肉体裸体全过程| 亚洲区一区二| 中文字幕第100页| 不卡一区二区中文字幕| 91网站免费视频| 亚洲综合色在线| 亚洲高清视频免费观看| 精品黑人一区二区三区久久| 成人免费在线观看| 97视频在线观看免费高清完整版在线观看| 99re久久| 激情五月综合色婷婷一区二区| 成人中文在线| 无码人妻h动漫| 粉嫩aⅴ一区二区三区四区| 内射毛片内射国产夫妻| 午夜伦欧美伦电影理论片| 亚洲视频在线观看免费视频| 亚洲国产欧美自拍| www在线视频| 国产精品久久久久影院日本| 电影一区二区在线观看| 中文字幕剧情在线观看一区| 欧美一级网站| 日本一卡二卡在线| 一区二区三区中文字幕精品精品| 亚洲视屏在线观看| 亚洲美女视频网站| 9999热视频在线观看| 亚洲综合色av| 999国产精品视频| 99热这里只有精品在线播放| 91尤物视频在线观看| 久久久精品国产sm调教| 欧美精品丝袜久久久中文字幕| 国产在线三区| 国产v综合ⅴ日韩v欧美大片 | 亚洲电影有码| 久热这里只精品99re8久| 激情视频一区二区三区| 久久发布国产伦子伦精品| 亚洲欧洲色图综合| 依依成人在线视频| 亚洲一级片在线看| 日本精品另类| 神马影院我不卡| 日日摸夜夜添夜夜添国产精品 | 午夜欧美在线一二页| 国产自产一区二区| 欧美激情综合色| 9l视频自拍蝌蚪9l视频成人| 黄色一级视频播放| 国产美女在线精品| 九九热国产在线| 欧美精品一区二区三区在线播放| wwww亚洲| 麻豆91蜜桃| 肉丝袜脚交视频一区二区| 日本一级免费视频| 欧美三级日本三级少妇99| av网站在线免费播放| 国产精品香蕉在线观看| 久久视频国产| 日日干日日操日日射| 亚洲美女免费在线| 亚洲精品911| 69影院欧美专区视频| 亚洲人成亚洲精品| 人妻无码视频一区二区三区| 国产视频911| 中文字幕在线网站| 久久香蕉频线观| 91成人噜噜噜在线播放| 欧美 日韩 国产在线观看| 久久综合九色综合97婷婷| 狠狠躁夜夜躁人人爽视频| 日韩中文综合网| 一区二区免费| 男人靠女人免费视频网站| 中文字幕精品—区二区四季| 中文字幕无码乱码人妻日韩精品| 久久久国产精品视频| 国产精品videossex| 欧美成人黑人猛交| 中文字幕视频一区| 隣の若妻さん波多野结衣| 2019最新中文字幕| 日韩精品dvd| 亚洲av无一区二区三区久久| 岛国av一区二区在线在线观看| 国产高清视频在线| 5g国产欧美日韩视频| 日韩一区二区免费看| 亚洲女同二女同志奶水| 日韩欧美激情一区| 亚洲精品**中文毛片| 欧美 另类 交| 91一区二区在线观看| 在线免费看av的网站| 久久乐国产精品| 久久国产精品亚洲人一区二区三区| 毛片毛片毛片毛片毛| 欧美午夜精品伦理| 免费网站黄在线观看| 久热国产精品视频一区二区三区| 精品在线你懂的| 久久国产精品免费看| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 99久久伊人精品| 国产又粗又黄又爽视频| 91国自产精品中文字幕亚洲| 午夜片欧美伦| 欧洲女同同性吃奶| 日韩欧美123| 9999在线精品视频| 国产裸体舞一区二区三区| 亚洲影院在线观看| 淫片在线观看|