bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

基于c++11的event-drivenlibrary的理解是怎樣的-創新互聯

這期內容當中小編將會給大家帶來有關基于c++11的event-drivenlibrary的理解是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:做網站、網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的涇川網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

做了一個不到200行的事件驅動庫,基于c++11標準,header-only,跨平臺。支持自定義事件,通過wake_up函數異步喚醒。寫這個庫的動機是想為之前自己寫的日志庫提供日志回滾機制。

github:https://github.com/chloro-pn/event_pool

event_pool

基本介紹

a header-only event-driven library based on c++11.

一個基于c++11標準,僅需要頭文件的事件驅動庫:)。

使用方法:

創建event_pool對象并申請一個線程做事件處理,在該線程中調用run函數。

//run the event_pool.  std::shared_ptr<event_pool> ev(new event_pool());  std::thread th([=]()->void {    ev->run();  });

創建event_handle和time_handle對象并設置id_,type_,回調函數func_,上下文args_(如果是time_handle則還要設置觸發時間)等,push進event_pool對象。

//create time_handle.  std::shared_ptr<time_handle> h(new time_handle());  h->id_ = "timer test ";  h->type_ = time_handle::type::duration;  h->duration_ = seconds(2);  h->args_ = nullptr;  h->func_ = [](std::shared_ptr<time_handle> self)->void {      std::cout << self->id_ << " wake up !" << std::endl;  };  //create event_handle.  std::shared_ptr<event_handle> eh(new event_handle());  eh->id_ = "back cout ";  eh->type_ = event_handle::type::every;  eh->args_ = nullptr;  eh->func_ = [](std::shared_ptr<event_handle> self)->void {    std::cout << self->id_ << " wake up !"<<std::endl;  };  //push them into ev.  ev->push_timer(h);  ev->push_event(eh);

在需要觸發事件的時候調用wake_up函數(time_handle沒有wake_up函數,等待時間到達自動觸發)。當需要關閉event_pool時,調用stop函數,然后回收線程,沒有來得及處理的事件會被丟棄,即使當event_pool 對象完全銷毀后,仍然可以調用wake_up函數,此時會直接返回。

while (true) {    char buf[1024];    gets(buf);    if (buf[0] == 'q') {     ev->stop(); // stop the event_pool.     break;    }    eh->wake_up();   }   th.join();

使用指南:

  1. 所有對象均需使用std::shared_ptr創建。  每個time_handle對象和event_handle對象只能push進一個event_pool對象。  event_handle對象可設置兩種類型:every和once,every類型允許不限次數的wake_up,event_pool會處理每次wake_up,而once類型只能被喚醒一次,但允許多次調用wake_up函數(線程安全),這意味著可以在多個線程并發的觸發事件。  time_handle對象可設置兩種類型:duration和time_point,其中duration類型通過設置duration_成員來指定從此刻開始,每間隔多少時間就觸發一次。time_point類型通過設置time_point_成員來指定在哪個時刻僅觸發一次。  回調函數的輸入參數就是該事件對象本身,你可以通過其訪問設置的id_,type_,args_等等。  event_pool的run函數可以在多個線程并發執行(maybe?),這一點暫且不保證。

特點:

1.輕量級,200行源代碼,語言層面的跨平臺,基于c++11標準。

2.僅需要頭文件,即拿即用。

todo:

定義更便于使用,減少出錯概率的接口。  補充測試。

上述就是小編為大家分享的基于c++11的event-drivenlibrary的理解是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。

本文標題:基于c++11的event-drivenlibrary的理解是怎樣的-創新互聯
路徑分享:http://vcdvsql.cn/article20/ddjojo.html

成都網站建設公司_創新互聯,為您提供網站設計公司、虛擬主機、關鍵詞優化、面包屑導航、外貿網站建設、品牌網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營