erizo使用ioworker進行ice,dtls的狀態互動處理。
標頭檔案
1class 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...