thread 具備多種職責
1.傳統的提供執行乙個任務
由使用者實現runnable中的介面run 然後呼叫start(runnable)
或直接覆蓋 virtual void run() 然後呼叫start
2.基於訊息佇列非同步處理
只要post(訊息處理者,訊息本身) 然後彙總另乙個執行緒執行,當然還的啟動start(null)
3.基於網路事件的處理
int main()
return result;}*/
rtc::asyncsocket* pasycsock = pthread->socketserver()->createasyncsocket(sock_stream);//非主動建立的thread也是可以建立socket具有事件處理功能的
// pthread->start();只對主動建立的thread物件才能start
pthread->processmessages(1);
return 0;
thread 建立後,可以通過start 執行,繼承thread的run 自動執行,但處理事件的processmessages需要自己呼叫,或thread::run()呼叫父類
以下建立thread的物件具有事件處理功能,可以建立socket
thread();
explicit thread(socketserver* ss);
explicit thread(std::unique_ptrss);
static std::unique_ptrcreatewithsocketserver();
以下建立的沒有事件處理功能 不能建立socket
static std::unique_ptrcreate();//只能具有執行緒和執行緒間訊息通訊功能
static thread* current(); //取決於當前執行緒的行為,本身不建立執行緒;即使在main中也不建立執行緒,只是建立了thread物件
如果是在main中是具有事件處理功能,可以建立socket,但不能start,所以不能建立再執行緒,但可以處理執行緒間訊息功能(沒有驗證)
如果是在thread::create 取的執行緒,則跟thread::create一樣,不能處理網路事件,
WebRTC 學習筆記(5) 執行緒模型
1,基本執行緒 webretc中主要有兩個執行緒 signaling thread 處理小工作量方法。要求此執行緒內的方法都必須快速返回。worker thread 處理大工作量的方法。此執行緒內的方法可能會處理很長時間,如網路訊息等。2,執行緒實現 webrtc中的執行緒包含了乙個訊息佇列。當需要...
WebRTC入門學習之初識WebRTC
引言 先宣告本人只是小小實習生一枚,若有不正確的,希望大家幫忙指正。一 webrtc基本架構 二 w3c提供的webrtc api 英文api 個人建議看英文版 中文api 版 三個主要api rtcdatachannel 用以任意應用資料通訊 學習重點 offer answer狀態機變化和ice狀...
webrtc之旅之什麼是webrtc(一)
這是一張經典的webrtc的架構圖,通過sip的 和閘道器將瀏覽器和終端連線起來,因此來引入我們的webrtc。所謂webrtc,首先要有web,就是圖中的各種瀏覽器,它代表了網際網路。然後就是rtc,及real time communication,即實時通訊,既然是通訊那麼就要有物件,包括 傳統...