<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

      UE5多線程|FRunnableThread

      0
      分享至


      【USparkle專欄】如果你深懷絕技,愛“搞點(diǎn)研究”,樂于分享也博采眾長(zhǎng),我們期待你的加入,讓智慧的火花碰撞交織,讓知識(shí)的傳遞生生不息!

      這是侑虎科技第1908篇文章,感謝作者南京周潤(rùn)發(fā)供稿。歡迎轉(zhuǎn)發(fā)分享,未經(jīng)作者授權(quán)請(qǐng)勿轉(zhuǎn)載。如果您有任何獨(dú)到的見解或者發(fā)現(xiàn)也歡迎聯(lián)系我們,一起探討。(QQ群:793972859)

      作者主頁(yè):

      https://www.zhihu.com/people/xu-chen-71-65

      UE游戲包與編輯器中都有眾多線程,多線程可以充分利用CPU多核特性,提升游戲表現(xiàn),而且現(xiàn)代CPU核數(shù)越來(lái)越多,游戲多線程就更有必要了。

      一、線程類型

      線程可分為專用線程和線程池中線程。

      專用線程為GameThread,RenderThread,StatsThread等,它們各自都干專門的事情,比如GameThread用于驅(qū)動(dòng)游戲邏輯,RenderThread用于渲染,StatsThread用于干性能分析。在事情干完后會(huì)進(jìn)入阻塞狀態(tài),不消耗CPU資源。

      線程池線程包括PoolThread和TaskGraphThread,每個(gè)線程用于干多種異步任務(wù)。游戲中許多任務(wù)并發(fā)量大,但持續(xù)時(shí)間短,比如求解動(dòng)畫藍(lán)圖,每幀都開幾個(gè)線程求解,求解完再銷毀線程無(wú)疑很浪費(fèi)。另外有很多瑣碎的多線程任務(wù),單獨(dú)為它們開線程也很浪費(fèi)。因此UE使用了線程池,池中線程會(huì)循環(huán)利用,不斷執(zhí)行不同的異步任務(wù),當(dāng)沒有任務(wù)時(shí)也處于阻塞狀態(tài)。

      使用多線程時(shí),UE已對(duì)底層平臺(tái)接口進(jìn)行了封裝,開發(fā)者無(wú)需關(guān)注平臺(tái)差異,直接使用UE提供的統(tǒng)一接口即可。

      常用的多線程方式包括:RunnableThread、ThreadPool 和 TaskGraph。這三者在底層線程的實(shí)現(xiàn)機(jī)制上有所不同,對(duì)外提供的接口種類豐富,部分接口還支持通過參數(shù)指定所使用的線程實(shí)現(xiàn)方式。

      二、FRunnable & FRunnableThread

      基本的線程使用方式為FRunnable與FRunnableThread的組合,用于創(chuàng)建專用線程,比如AsyncLoadingThread與渲染線程等。FRunnable負(fù)責(zé)邏輯,F(xiàn)RunnableThread負(fù)責(zé)具體線程,線程承載了邏輯,兩者一一對(duì)應(yīng),好處是上層邏輯與底層平臺(tái)接口分離。

      FRunnable

      FRunnable類本身代表一個(gè)抽象的“可運(yùn)行”對(duì)象,只有幾個(gè)接口,不涉及線程細(xì)節(jié),是我們寫邏輯的地方,理論上可以在任意線程執(zhí)行。

      接口如下:

      • Init Runnable的初始化,初始化可能成功,可能失敗,失敗會(huì)立即返回,線程結(jié)束。

      • Run執(zhí)行邏輯主體,初始化成功后執(zhí)行。

      • Exit Run中任務(wù)執(zhí)行完后的正常退出接口,執(zhí)行清理操作。

      • Stop由其他線程調(diào)用,用于中途停止該Runnable以及背后的線程,但具體如何停止要我們自己實(shí)現(xiàn)。

      • GetSingleThreadInterface,當(dāng)UE強(qiáng)制單線程模式時(shí),返回用于Tick執(zhí)行的實(shí)例,用的不多。

      上述接口不用我們調(diào)用,對(duì)應(yīng)線程創(chuàng)建好后會(huì)自動(dòng)調(diào)用。

      示例FAsyncloadingThread:

      該類用于處理異步資源加載,會(huì)另開一個(gè)線程加載資源,繼承了FRunnable,內(nèi)部的Thread變量存儲(chǔ)線程。


      Init函數(shù)沒做什么,Run函數(shù)如下:


      主體是一個(gè)while循環(huán),StopTaskCounter是循環(huán)退出條件,為Atomic計(jì)數(shù)器,當(dāng)未被設(shè)置時(shí)就不斷處理加載,被設(shè)置后即退出。

      Stop函數(shù)如下,會(huì)設(shè)置StopTaskCounter變量:


      創(chuàng)建線程,啟動(dòng)Run邏輯。

      只需要下面一行代碼即可,詳細(xì)會(huì)在下文介紹:

      FRunnableThread

      FRunnableThread是平臺(tái)線程的抽象,也是基類,與平臺(tái)相關(guān)的線程操作由多個(gè)子類完成,包括:

      • FRunnableThreadWin

      • FRunnableThreadUnix

      • FRunnableThreadApple

      • FRunnableThreadAndroid

      我們不需要繼承和修改這些類,使用即可。

      成員變量:

      • FString ThreadName:線程名。

      • FRunnable* Runnable:對(duì)應(yīng)Runnable。

      • FEvent* ThreadInitSyncEvent:同步的Event。

      • EThreadPriority ThreadPriority:線程優(yōu)先級(jí),UE自己抽象了幾個(gè)枚舉。

      接口:

      • Kill:結(jié)束線程,UE建議不要用操作系統(tǒng)的Kill接口,強(qiáng)殺線程會(huì)導(dǎo)致泄露和死鎖,應(yīng)該調(diào)用Runnable的Stop方法。

      • WaitForCompletion:忙等,直到線程執(zhí)行完。

      • Suspend:讓線程掛起或繼續(xù)執(zhí)行。

      • SetThreadPriority:設(shè)置線程優(yōu)先級(jí)。

      FRunnableThreadWin

      看下常見的Windows平臺(tái)子類如何實(shí)現(xiàn)。

      Windows平臺(tái)的線程為內(nèi)核對(duì)象,通過HANDLE持有索引,這里的Thread就是底層的線程。


      Kill方法內(nèi)調(diào)用了Runnable的Stop,該函數(shù)由我們自己實(shí)現(xiàn),然后可選忙等,最后調(diào)用操作系統(tǒng)的CloseHandle方法釋放線程內(nèi)核對(duì)象。


      Windows有TerminateThread方法可以直接結(jié)束線程,但平常不推薦調(diào)用,有以下幾個(gè)原因:

      • 線程函數(shù)中C++對(duì)象的析構(gòu)函數(shù)不會(huì)被執(zhí)行;

      • 線程棧不會(huì)被清理,除非調(diào)用TerminateThread的線程結(jié)束。這是Windows有意為之,加入其他在運(yùn)行的線程要引用被“殺死”線程堆棧上的值,就會(huì)引起非法內(nèi)存訪問;

      • DLL通常會(huì)在線程終止時(shí)收到通知,但TerminateThread會(huì)導(dǎo)致DLL收不到通知,從而不執(zhí)行正常的清理工作。

      Suspend方法調(diào)用兩個(gè)操作系統(tǒng)接口,掛起和恢復(fù):


      SetThreadPriority方法同樣調(diào)用了操作系統(tǒng)接口,只是要做優(yōu)先級(jí)轉(zhuǎn)換,Windows平臺(tái)線程優(yōu)先級(jí)為0-31,31最高。


      Windows中WaitForSingleObject可以實(shí)現(xiàn)WaitForCompletion效果:


      三、創(chuàng)建線程

      使用靜態(tài)方法Create可創(chuàng)建FRunnableThread和底層線程:


      • InStack為線程棧大小;

      • InThreadPri為線程優(yōu)先級(jí);

      • InThreadAffinityMask為線程的CPU運(yùn)行偏好,一般用默認(rèn)值;

      • InCreateFlags也一般用默認(rèn)值。

      函數(shù)內(nèi)部首先創(chuàng)建NewThread對(duì)象,Windows平臺(tái)即FRunnableThreadWin。如果當(dāng)前設(shè)置了強(qiáng)制單線程模式,還可選創(chuàng)建FakeThread,通過Tick驅(qū)動(dòng)執(zhí)行。


      之后進(jìn)入CreateInternal函數(shù),調(diào)用操作系統(tǒng)接口創(chuàng)建線程。把Runnable屬性設(shè)置為傳入的InRunnable,然后把線程相關(guān)參數(shù)轉(zhuǎn)化為適配當(dāng)前操作系統(tǒng)的參數(shù),調(diào)用CreateThread Win32API創(chuàng)建線程,線程執(zhí)行的函數(shù)為_ThreadProc。同時(shí)注意到CREATE_SUSPENDED參數(shù),線程創(chuàng)建后默認(rèn)為掛起狀態(tài),執(zhí)行了后面的ResumeThread,才會(huì)讓改線程運(yùn)行。ThreadInitSyncEvent用于等待線程的Init執(zhí)行完畢,執(zhí)行完后調(diào)用線程才會(huì)繼續(xù)。


      _ThreadProc函數(shù)先向UE的線程管理類注冊(cè)改線程,然后進(jìn)入FRunnableThreadWin::Run函數(shù),真正開始邏輯,注意這個(gè)Run函數(shù)和FRunnable的Run毫無(wú)關(guān)系。

      首先調(diào)用Runnable的Inti函數(shù),之后觸發(fā)ThreadInitSyncEvent,通知調(diào)用線程繼續(xù)。然后執(zhí)行最主要的Runnable->Run,等Run自動(dòng)結(jié)束了,再調(diào)用Runnable->Exit做清理。最后返回ExitCode,改線程終止。



      四、使用方式

      Runnable有多種使用方式:

      1. 手動(dòng)創(chuàng)建FRunnable和FRunnableThread

      可參考前面的FAsyncLoadingThread,適合一個(gè)長(zhǎng)期任務(wù),而且工作量大。

      2. Async函數(shù)

      有時(shí)我們只想在其他線程中執(zhí)行一個(gè)短期任務(wù),線程生命周期不長(zhǎng),此時(shí)專門創(chuàng)建一個(gè)Runnable子類,并手動(dòng)創(chuàng)建一個(gè)Thread有些繁瑣。引擎提供了Async函數(shù),可以只提供我們想要執(zhí)行的Lambda函數(shù),引擎為我們創(chuàng)建一個(gè)Thread,或者從線程池中選擇一個(gè)Thread來(lái)執(zhí)行邏輯。

      使用例子:


      第一個(gè)參數(shù)用于指定線程模式。

      Async函數(shù)定義如下:


      第一個(gè)參數(shù)為線程執(zhí)行方式,第二個(gè)為傳入的函數(shù)對(duì)象,第三個(gè)為執(zhí)行完的回調(diào)。

      線程執(zhí)行方式Execution有如下幾種取值:

      • TaskGraph:在TaskGraph框架下執(zhí)行,會(huì)在線程池選一個(gè)線程,適合短任務(wù)。

      • TaskGraphMainThread:與上面類似,但會(huì)用主線程。

      • Thread:創(chuàng)建一個(gè)新線程執(zhí)行,適合長(zhǎng)任務(wù)。

      • ThreadIfForkSate:不知。

      • ThreadPool:在GlobalThreadPool中選一個(gè)線程執(zhí)行。

      • LargeThreadPool:與上面類似,在LargeThreadPool選線程執(zhí)行,僅Editor下可用。

      這里我們只關(guān)注Thread模式,處理分支如下:


      創(chuàng)建了一個(gè)TAsyncRunnable對(duì)象,把Function和Promise傳入其中,Promise可理解為上面的CompletionCallback,然后通過FRunnableThread::Create接口創(chuàng)建新線程,執(zhí)行該Runnable。

      TAsyncRunnable是一種特殊類型,它接收一個(gè)Function、Promise或Future作為參數(shù)。觀察其Run方法:在SetPromise時(shí)會(huì)執(zhí)行我們指派的任務(wù)。這個(gè)FRunnable和FRunnableThread對(duì)象是匿名的,外部代碼僅進(jìn)行New而不Delete,其生命周期由TAsyncRunnable自身托管。具體的清理做法是將刪除操作提交至任務(wù)隊(duì)列(TaskGraph)。之所以不立即Delete,是因?yàn)榇藭r(shí)Run函數(shù)可能尚未執(zhí)行完畢,立即Delete自身可能導(dǎo)致異常情況。


      3. AsyncThread函數(shù)

      和Async函數(shù)類似,內(nèi)部都用TAsyncRunnable實(shí)現(xiàn),不過它是專門創(chuàng)建匿名線程來(lái)執(zhí)行任務(wù)的,因此參數(shù)中增加了線程優(yōu)先級(jí)選項(xiàng),這種用法引擎中不多。


      五、線程同步工具

      多線程環(huán)境下線程同步是個(gè)問題,UE提供了多種線程同步工具。

      Atomics

      Atomics可以原子的改變一個(gè)變量,相比鎖是更輕量的線程同步工具,線程不需要切換狀態(tài),提供更好的性能。從底層視角看,原子操作也是有鎖的,現(xiàn)代多核CPU會(huì)通過電路信號(hào)鎖Cache的方式來(lái)實(shí)現(xiàn)原子操作,只是這個(gè)過程很快。原子操作是一些多線程安全類型的實(shí)現(xiàn)基石。

      使用場(chǎng)景

      常見使用場(chǎng)景為實(shí)現(xiàn)多線程安全的計(jì)數(shù)器,比如SharedPtr里的引用計(jì)數(shù),下面的SharedReferenceCount類型就是std::atomic。


      UE引擎提供了幾個(gè)類型,是對(duì)操作系統(tǒng)和C++ Atomic功能的封裝。

      FPlatformAtomics

      可對(duì)一個(gè)地址進(jìn)行原子操作,如Add,Exchange。在不同平臺(tái)上會(huì)調(diào)用各自原子操作接口,Windows為Win32Api的_InterlockedExchange等接口。

      示例


      TAtomic

      類似std::atomic,底層使用FPlatformAtomics實(shí)現(xiàn),提供相似接口。在UE5中,已被標(biāo)記為DEPRECATED,推薦直接使用std::atomic。

      FThreadSafeCounter

      封裝的線程安全計(jì)數(shù)器,提供Increment、Decrement等接口,底層同樣使用FPlatformAtomics實(shí)現(xiàn)。

      六、鎖

      鎖可以創(chuàng)建一個(gè)臨界區(qū),在臨界區(qū)內(nèi)的代碼只允許一個(gè)線程執(zhí)行,其他線程等待。根據(jù)臨界區(qū)執(zhí)行時(shí)間,以及平臺(tái)實(shí)現(xiàn),鎖可能使線程從運(yùn)行態(tài)切換到阻塞態(tài),讓出CPU,這個(gè)狀態(tài)切換也需要線程從用戶模式切換到內(nèi)核模式,切換時(shí)間大概1000個(gè)CPU周期。因此鎖是較重的線程同步工具。

      FCriticalSection

      UE提供了FCriticalSection作為各平臺(tái)鎖的封裝。

      Windows平臺(tái)底層使用CriticalSection實(shí)現(xiàn),稱為關(guān)鍵段,Windows平臺(tái)上也有互斥量Mutex,但CriticalSection相比Mutex速度更快。進(jìn)入臨界區(qū)需要調(diào)用EnterCriticalSection,其內(nèi)部會(huì)先用原子操作interlocked檢查是否能訪問資源,如果能訪問,就接著運(yùn)行,這個(gè)速度很快。如果不能訪問,通常先Spin忙等一小段時(shí)間,若還不能訪問資源,再使用Event內(nèi)核對(duì)象進(jìn)入阻塞態(tài)。當(dāng)臨界區(qū)比較短時(shí),可以避免用戶模式到內(nèi)核模式的切換。因此Windows平臺(tái)會(huì)用CriticalSection。

      Linux平臺(tái)底層使用pthread_mutex_t實(shí)現(xiàn)。

      Windows實(shí)現(xiàn):

      初始化CriticalSection,4000表示未獲取到鎖忙等的CPU周期。


      加鎖


      解鎖


      示例

      通常使用FScopeLock配合FCriticalSection使用,可以通過構(gòu)造函數(shù)與析構(gòu)函數(shù)機(jī)制,使作用域內(nèi)的代碼成為臨界區(qū)。


      Event

      Event用于多線程的同步,比如上文介紹的Windows線程創(chuàng)建,主線程在調(diào)用CreateThread后,調(diào)用ThreadInitSyncEvent->Wait(),等待新線程完成初始化工作,新建線程初始化后執(zhí)行ThreadInitSyncEvent->Trigger(),通知主線程繼續(xù)執(zhí)行。

      Windows平臺(tái)底層使用Event內(nèi)核對(duì)象實(shí)現(xiàn)Event。Event有自動(dòng)重置和手動(dòng)重置概念,自動(dòng)重置時(shí),一個(gè)線程執(zhí)行Trigger后,只有一個(gè)Wait的線程會(huì)被喚醒繼續(xù)執(zhí)行,手動(dòng)重置時(shí),所有Wait的線程都會(huì)被喚醒,后續(xù)要手動(dòng)調(diào)用重置函數(shù),才能使Event變?yōu)槲从|發(fā)狀態(tài)。通常都使用自動(dòng)重置。

      FEvent

      UE使用FEvent類型表示一個(gè)Event,有Wait、Trigger、Reset等接口。而且Event是內(nèi)核對(duì)象,創(chuàng)建比較昂貴,因此UE使用EventPool來(lái)管理這些Event,根據(jù)ManualReset分成兩個(gè)Pool。

      EventPool接口:


      WindowsRunnableThread中使用方式:


      文末,再次感謝南京周潤(rùn)發(fā) 的分享, 作者主頁(yè):https://www.zhihu.com/people/xu-chen-71-65, 如果您有任何獨(dú)到的見解或者發(fā)現(xiàn)也歡迎聯(lián)系我們,一起探討。(QQ群: 793972859 )。


      近期精彩回顧





      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點(diǎn)推薦
      生殖科最奇葩的事是什么?網(wǎng)友:這個(gè)科絕對(duì)是最有錢成本最低的科

      生殖科最奇葩的事是什么?網(wǎng)友:這個(gè)科絕對(duì)是最有錢成本最低的科

      帶你感受人間冷暖
      2025-12-25 00:05:19
      “一把手”換帥!廣州迎來(lái)實(shí)干派技術(shù)型領(lǐng)導(dǎo),事關(guān)未來(lái)幾年廣東的發(fā)展密碼!

      “一把手”換帥!廣州迎來(lái)實(shí)干派技術(shù)型領(lǐng)導(dǎo),事關(guān)未來(lái)幾年廣東的發(fā)展密碼!

      礦材網(wǎng)
      2025-12-25 00:06:40
      回顧“91大神”秦先生落網(wǎng):原本街頭擺攤,很多白富美被其偷拍

      回顧“91大神”秦先生落網(wǎng):原本街頭擺攤,很多白富美被其偷拍

      就一點(diǎn)
      2025-11-24 16:34:08
      河南美女“大晨”去世,年僅28歲,日常開奧迪,一口能喝三兩白酒

      河南美女“大晨”去世,年僅28歲,日常開奧迪,一口能喝三兩白酒

      寶哥精彩賽事
      2025-12-16 08:40:55
      對(duì)華反擊計(jì)劃已敲定!高市早苗興奮之際發(fā)現(xiàn):中國(guó)正狂拋美債

      對(duì)華反擊計(jì)劃已敲定!高市早苗興奮之際發(fā)現(xiàn):中國(guó)正狂拋美債

      滄海一書客
      2025-12-24 08:28:17
      地下捐精有多亂!女的被約到賓館,捐精者:直接懷孕只收800元

      地下捐精有多亂!女的被約到賓館,捐精者:直接懷孕只收800元

      雍親王府
      2025-11-14 14:50:03
      看了《一路繁花》里的劉嘉玲,再對(duì)比劉曉慶,才懂什么叫氣質(zhì)差距

      看了《一路繁花》里的劉嘉玲,再對(duì)比劉曉慶,才懂什么叫氣質(zhì)差距

      未曾青梅
      2025-12-23 23:39:36
      2026年開始,房地產(chǎn)將迎來(lái)“拋售潮”??jī)?nèi)行人:房?jī)r(jià)可能超乎想象

      2026年開始,房地產(chǎn)將迎來(lái)“拋售潮”??jī)?nèi)行人:房?jī)r(jià)可能超乎想象

      韓胖說(shuō)裝修
      2025-12-22 20:05:17
      特朗普宣布從委扣押的中國(guó)油輪將由美國(guó)“永久保留”,船和油都要

      特朗普宣布從委扣押的中國(guó)油輪將由美國(guó)“永久保留”,船和油都要

      科普大世界
      2025-12-24 14:44:12
      為什么反感滿清的情緒,會(huì)在今天突然集中爆發(fā)?

      為什么反感滿清的情緒,會(huì)在今天突然集中爆發(fā)?

      西域都護(hù)
      2025-12-13 23:55:19
      一次扣12分+罰款1000元!上海警方通報(bào):多車被重罰,涉這項(xiàng)違法行為!

      一次扣12分+罰款1000元!上海警方通報(bào):多車被重罰,涉這項(xiàng)違法行為!

      新浪財(cái)經(jīng)
      2025-12-24 14:51:31
      10人U22國(guó)足1-0中亞黑馬!西亞拉練迎開門紅 王鈺棟制勝+彭嘯復(fù)出

      10人U22國(guó)足1-0中亞黑馬!西亞拉練迎開門紅 王鈺棟制勝+彭嘯復(fù)出

      我愛英超
      2025-12-24 12:24:07
      曼城轉(zhuǎn)會(huì)操作遭痛批!記者直言這就是“瞎折騰”!

      曼城轉(zhuǎn)會(huì)操作遭痛批!記者直言這就是“瞎折騰”!

      奶蓋熊本熊
      2025-12-25 03:00:29
      月底大難已過!這 3 生肖財(cái)運(yùn)迸發(fā),人逢喜事精神爽,日子不愁錢

      月底大難已過!這 3 生肖財(cái)運(yùn)迸發(fā),人逢喜事精神爽,日子不愁錢

      人閒情事
      2025-12-24 12:25:24
      任弼時(shí)在會(huì)上提議撤除毛主席的軍職,王稼祥的表現(xiàn)卻把他震驚到了

      任弼時(shí)在會(huì)上提議撤除毛主席的軍職,王稼祥的表現(xiàn)卻把他震驚到了

      鶴羽說(shuō)個(gè)事
      2025-12-01 11:18:25
      75 歲老太,帶100土雞蛋探望兒子,兒媳當(dāng)她面全倒進(jìn)垃圾桶

      75 歲老太,帶100土雞蛋探望兒子,兒媳當(dāng)她面全倒進(jìn)垃圾桶

      溫情郵局
      2025-12-20 11:59:18
      西方戰(zhàn)略專家:“日本的自尋死路,開啟了中國(guó)新一輪國(guó)運(yùn)大爆發(fā)”

      西方戰(zhàn)略專家:“日本的自尋死路,開啟了中國(guó)新一輪國(guó)運(yùn)大爆發(fā)”

      揭秘歷史的真相
      2025-12-24 21:04:07
      好巧合:南京導(dǎo)航失靈,日本發(fā)射衛(wèi)星,二級(jí)火箭卻再次提前自殺

      好巧合:南京導(dǎo)航失靈,日本發(fā)射衛(wèi)星,二級(jí)火箭卻再次提前自殺

      觸摸史跡
      2025-12-22 20:32:59
      女子出軌被抓包,丈夫抓她游行示眾:她把我的錢給其他男人花

      女子出軌被抓包,丈夫抓她游行示眾:她把我的錢給其他男人花

      唐小糖說(shuō)情感
      2025-06-15 08:46:47
      婚變傳聞后、羅晉攜任素汐與母親去祈福,撕碎了唐嫣最后一絲體面

      婚變傳聞后、羅晉攜任素汐與母親去祈福,撕碎了唐嫣最后一絲體面

      張發(fā)林
      2025-12-20 18:13:47
      2025-12-25 04:07:00
      侑虎科技UWA incentive-icons
      侑虎科技UWA
      游戲/VR性能優(yōu)化平臺(tái)
      1532文章數(shù) 986關(guān)注度
      往期回顧 全部

      科技要聞

      智譜和MiniMax拿出了“血淋淋”的賬本

      頭條要聞

      幼兒園8人遇難兒童母親:女兒4歲 今年9月入讀

      頭條要聞

      幼兒園8人遇難兒童母親:女兒4歲 今年9月入讀

      體育要聞

      26歲廣西球王,在質(zhì)疑聲中成為本土得分王

      娛樂要聞

      懷孕增重30斤!闞清子驚傳誕一女夭折?

      財(cái)經(jīng)要聞

      北京進(jìn)一步放松限購(gòu) 滬深是否會(huì)跟進(jìn)?

      汽車要聞

      “運(yùn)動(dòng)版庫(kù)里南”一月份亮相???或命名極氪9S

      態(tài)度原創(chuàng)

      藝術(shù)
      房產(chǎn)
      健康
      手機(jī)
      軍事航空

      藝術(shù)要聞

      巨星劉德華1000萬(wàn)善款建村,為何如今竟成山間“空心村”?

      房產(chǎn)要聞

      硬核!央企海口一線江景頂流紅盤,上演超預(yù)期交付!

      這些新療法,讓化療不再那么痛苦

      手機(jī)要聞

      榮耀Magic8 Ultra:雙3D生物識(shí)別+LOFIC主攝,還有24GB大內(nèi)存!

      軍事要聞

      軍事專家:"特朗普級(jí)"戰(zhàn)艦設(shè)計(jì)疑大量借鑒中國(guó)055大驅(qū)

      無(wú)障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 精品久久久久久国产| 国产裸体美女视频全黄| 久久99精品久久久久久9| 91网在线| 波多野结衣AV不卡无码| 免费中文熟妇在线影片| 亚洲码欧美码一区二区三区| 一本一道av无码中文字幕﹣百度 | 在线无码av一区二区三区| 九九热爱视频精品| 超碰人人摸| 亚洲性网| 天天躁夜夜躁av天天爽| 无码人妻网站| 天堂伊人网| 制服.丝袜.亚洲.中文.综合| 在线A级毛片无码免费真人| 亚洲综合婷婷| 天天躁日日躁狠狠躁欧美老妇| 任我爽精品视频在线观看| 忘忧草日本在线播放www| 日韩精品av一区二区三区| 少妇久久久久久被弄到高潮| 无码中文av有码中文av| 精品亚洲麻豆1区2区3区| 精品国产一卡| 国产无码第一页| 上海av电影在线观看| 免费A片国产毛无码A片| 无码18禁成人免费| 国产熟女真品久| 亚洲区视频| 大香蕉一区二区三区| a免费在线| 免青青草免费观看视频在线| 99re久久资源最新地址| 成人免费无码大片a毛片软件 | 游戏| 99精品久久久久久无码人妻| 少妇精品| 一本大道中文字幕无码29|