licode學習之erizo篇 IOWorker

2022-08-24 18:51:07 字數 946 閱讀 7406

erizo使用ioworker進行ice,dtls的狀態互動處理。

標頭檔案

1

class ioworker : public std::enable_shared_from_this;

介面定義與worker基本沒有區別,但是內部使用了atomic變數,而沒有使用boost的io service,說明執行緒的執行是自己控制的,看看具體實現

主要看執行緒執行體以及task方法

void ioworker::start(std::shared_ptrvoid>>start_promise) 

thread_ = std::unique_ptr(new std::thread([this

, start_promise] ;

struct

timeval tv;

int r = nr_async_event_wait2(&events, &towait);

if (r ==r_eod)

gettimeofday(&tv, 0

); nr_async_timer_update_time(&tv);

std::vector

tasks;

for (task &task : tasks)

}}));

}void

ioworker::task(task f)

在start裡面做了重入檢測判斷,如果重入,直接返回。

在task函式中,將task放入vector中,從總體實現上,與worker有很大的區別,但是從使用角度,基本是無差別的。

搞不清楚為啥弄的風格相差這麼多。

在ioworker裡面,使用效率可能不如worker的效率高,而且人為的將任務集中執行,可能造成瞬時cpu過高。

總體上和worker沒有差別,感覺應該能夠和worker進行合併,不需要ioworker這個個東西

licode學習之erizo篇 Worker

erizo使用worker來管理task,每個task是乙個函式片段,其執行完全由worker來接管。這次主要學習worker的結構定義和實現機制 1 class worker public std enable shared from this 先來研究一下建構函式 worker worker s...

Groovy學習之資料篇

groovy 官方 大部分問題看這裡的文件都可以搞定了,從入門到精通在這裡都可以完成。pleac groovy 大量的 示例,是perl cookbook的乙個groovy版本 groovy tutorial 非常好的乙個介紹groovy的ppt,可以快速的對groovy有乙個總體的了解,可以看作是...

shell學習之awk篇

網上關於awk的部落格說的也是夠多的了,之所以再寫有兩點原因 1 大部分博文說的不夠全面 2 作為自己系統學習shell的乙個記載。0.以下示例說明均以此資料作為依據,檔名為countries ussr 8649 275 asia canada 3852 25 north america china...