unity c 子執行緒與主線程資料傳遞

2021-10-19 03:50:30 字數 642 閱讀 1849

引言:在unity裡做ai大量模型運算處理,如果在update裡進行處理會阻塞主線程,導致掉幀,這個時候需要單獨開闢乙個執行緒進行資料處理,緩解主線程處理壓力。

應用了網友的乙個處理方法,測試可用,整理一下,備忘。

using system.threading;

//訊息結構

public class message

listmessagelist = new list();

//使用該方法在unity的update裡往外取資料

private void dispatch()

else//補幀

}}//訊息格式

private void handlemessage(message message) }

//開啟執行緒

private void startnewthread()

//開啟執行緒後這裡會壓資料

private void subthread()

); }

}}

總結:思路就是在unity的指令碼 start() 裡開啟乙個執行緒,執行緒中進行while 迴圈,用於處理計算量比較大的ai模型,處理完的結果壓入自己開闢的緩衝區 list,然後在update()裡取出處理結果。

Android UI主線程與子執行緒

乙個android 程式預設情況只有乙個程序,但是乙個程序可以有多個執行緒。其中有乙個ui 執行緒也稱為ui主線程,ui thread在android程式執行的時候就被建立,主要是負責控制ui介面的顯示 更新和控制項互動。所有的android應用程式元件 包括activity service bro...

主線程和子執行緒

子執行緒通過 handlerthread的thread.getlooper 繫結,在主線程的handler的handlermessage中呼叫threadhandler.sendmessagedelay msg,1000 向子執行緒傳送訊息。在子執行緒中通過handler.sendmessagede...

主線程和子執行緒

主線程負責管理由它建立的子執行緒,建立 啟動 掛起 停止等。主線程通過發訊息的方式管理子執行緒,例如,給子執行緒傳送start 訊息,子執行緒啟動,子執行緒執行入口的run 方法。thread有下面兩個構造方法 thread runnable target,string name thread ru...