翻譯:Libevent參考手冊第三章:與事件迴圈一起工作 (五) (轉)
預設情況下,event_base_loop()函式執行event_base直到其中沒有已經註冊的事件為止。執行迴圈的時候,函式重複地檢查是否有任何已經註冊的事件被觸發(比如說,讀事件的檔案描述符已經就緒,可以讀取了;或者超時事件的超時時間即將到達)。如果有事件被觸發,函式標記被觸發的事件為“啟用的”,並且執行這些事件。
在flags引數中設定一個或者多個標誌就可以改變event_base_loop()的行為。如果設定了EVLOOP_ONCE,迴圈將等待某些事件成為啟用的,執行啟用的事件直到沒有更多的事件可以執行,然會返回。如果設定了EVLOOP_NONBLOCK,迴圈不會等待事件被觸發:迴圈將僅僅檢測是否有事件已經就緒,可以立即觸發,如果有,則執行事件的回撥。
完成工作後,如果正常退出,event_base_loop()返回0;如果因為後端中的某些未處理錯誤而退出,則返回-1。
為幫助理解,這裡給出event_base_loop()的演算法概要:
虛擬碼
相關推薦
翻譯:Libevent參考手冊第三章:與事件迴圈一起工作 (五) (轉)
預設情況下,event_base_loop()函式執行event_base直到其中沒有已經註冊的事件為止。執行迴圈的時候,函式重複地檢查是否有任何已經註冊的事件被觸發(比如說,讀事件的檔案描述符已經就緒,可以讀取了;或者超時事件的超時時間即將到達)。如果有事件被觸發,函式標記被觸發的事件為“啟用的”,並且執行
翻譯:libevent參考手冊第九章:連線監聽器:接受TCP連線 (十一) (轉)
#include <event2/listener.h>#include <event2/bufferevent.h>#include <event2/buffer.h>#include <arpa/inet.h>#include <string.h>
翻譯:libevent參考手冊第六章:bufferevent:概念和入門 (八) (轉)
bufferevent_setcb()函式修改bufferevent的一個或者多個回撥。readcb、writecb和eventcb函式將分別在已經讀取足夠的資料、已經寫入足夠的資料,或者發生錯誤時被呼叫。每個回撥函式的第一個引數都是發生了事件的bufferevent,最後一個引數都是呼叫buffereven
翻譯:libevent參考手冊第七章:Bufferevent:高階話題 (九) (轉)
bufferevent_filter_new()函式建立一個封裝現有的“底層”bufferevent的過濾bufferevent。所有通過底層bufferevent接收的資料在到達過濾bufferevent之前都會經過“輸入”過濾器的轉換;所有通過底層bufferevent傳送的資料在被髮送到底層buffer
翻譯:libevent參考手冊第四章:與事件一起工作 (六) (轉)
libevent的基本操作單元是事件。每個事件代表一組條件的集合,這些條件包括:v 檔案描述符已經就緒,可以讀取或者寫入v 檔案描述符變為就緒狀態,可以讀取或者寫入(僅對於邊沿觸發IO)v 超時事件v 發生某訊號v 使用者觸發事件所有事件具有相似的生命週期。呼叫libevent函式設定事件並且關聯到event
翻譯:libevent參考手冊第八章:evbuffer:緩衝IO實用功能 (十) (轉)
{ /* Let's look at the first two chunks of buf, and write them to stderr. */int n, i; struct evbuffer_iovec v[2]; n = evbuffer_peek(buf, -1, NULL,
翻譯:libevent參考手冊第五章:輔助型別和函式 (七) (轉)
這些巨集訪問和操作套接字錯誤程式碼。EVUTIL_SOCKET_ERROR()返回本執行緒最後一次套接字操作的全域性錯誤號,evutil_socket_geterror()則返回某特定套接字的錯誤號。(在類Unix系統中都是errno)EVUTIL_SET_SOCKET_ERROR()修改當前套接字錯誤號(與
【.NET Core專案實戰-統一認證平臺】第三章 閘道器篇-資料庫儲存配置(1)
原文: 【.NET Core專案實戰-統一認證平臺】第三章 閘道器篇-資料庫儲存配置(1) 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 本篇將介紹如何擴充套件Ocelot中介軟體實現自定義閘道器,並使用2種不同資料庫來演示Ocelot配置資訊儲存和動態更新功能,內容也是從實際設計出發
翻譯:Libevent參考手冊第一章:設定libevent (三) (轉)
evthread_lock_callbacks結構體描述的鎖回撥函式及其能力。對於上述版本,lock_api_version欄位必須設定為EVTHREAD_LOCK_API_VERSION。必須設定supported_locktypes欄位為EVTHREAD_LOCKTYPE_*常量的組合以描述支援的鎖型別(
翻譯:libevent參考手冊第二章:建立event_base (四) (轉)
呼叫event_config_avoid_method()可以通過名字讓libevent避免使用特定的可用後端。呼叫event_config_require_feature()讓libevent不使用不能提供所有指定特徵的後端。呼叫event_config_set_flag()讓libevent在建立even
翻譯:Libevent參考手冊:前言 (二) (轉)
1 從一萬英尺外看LibeventLibevent是用於編寫高速可移植非阻塞IO應用的庫,其設計目標是:v 可移植性:使用libevent編寫的程式應該可以在libevent支援的所有平臺上工作。即使沒有好的方式進行非阻塞IO,libevent也應該支援一般的方式,讓程式可以在受限的環境中執行。v 速度:l
(雲吶管理手冊)第三章:新增部門、人員及角色分配
作為一款管理平臺,需要先明確哪些人員需要使用本系統,這些人員屬於哪個角色,又屬於哪個部門。因此,您首先需要設定貴企業的組織結構以及將企業人員新增至平臺中,並對角色進行定義。新增部門、人員及角色分配由於使用頻率及操作難度限制,目前僅WEB客戶端提供此功能,您可以登入WEB客戶端
讀構建之法 第三章:軟件工程師的成長
知識點 可維護 vid -s 評估 不同 fun 可靠 科研 本章理論和知識點:評價軟件工程師水平的主要方法 軟件工程把相關的技術和過程統一到一個體系中,叫“軟件開發流程”,軟件開發流程的目的是為了提高軟件開發、運營、維護的效率,以及提升用戶滿意度、軟件的可靠性和可維護性。
補基礎:自學:計算機科學導論 第三章 數據存儲
計算機科學 通用 3.1 數據類型 數字 文字 音頻 圖像 視頻 計算機內部的數據 所有計算機外部的數據類型的數據都采用統一的數據表示法轉換後存入計算機中,當數據從計算機輸出時再還原回來。這種通用的格式稱為位模式。 1. 位:是存儲在計算機中的最小
補基礎:自學:計算機科學導論 第三章 數據存儲 續
計算機科學 二進制 科學技術 十進制 小數點 3.2.2 存儲實數 1. 浮點表示法 該表示法允許小數點浮動,用於維持正確度或精度。 在此表示法中,無論十進制還是二進制,一個數字都由3部分組成: 符號 位移量: 顯示小數點應該左右移動構成實際數
第三章:基本概念
npr bject 字面量 enume 不能 數據 開頭 clas int() 語法 借鑒了C語言以及類C語言(如java,perl)的語法 區分大小寫 標記符 字母數字下劃線$ 開頭不為數字 嚴格模式 use strict; 語句以分號結尾 關鍵
第三章:使用listview控件展示數據
復數 ted ima 深度 lar row listview items uil 第三章:使用listview控件展示數據 1.圖像列表控件Imagelist Images 儲存的所有圖片的復數 ImageSize 圖片的大小 transparentColor 被視
《Python基礎教程》第三章:使用字符串
方法的參數 基礎 指定 方法 添加 repl pre replace this find方法可以在一個較長的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果沒有找到則返回-1 join方法用來在隊列中添加元素,需要添加的隊列元素都必須是字符串 >>
第三章:TestOps方法論
測試數據 bug 重要 性能 開發 良好的 image 工具 ued 某些質量目標只能在TestOps中可行,這就是為什麽TestOps成功的一個重要因素,也這是一個開發團隊和測試團隊與Ops具有相同目標的範例。 TestOps需要一個全面的方
《數據庫設計入門經典》讀書筆記——第三章:工作場所中的數據庫建模
中間 特定 理論 大學 並且 外鍵 另一個 必須 所有 規範化用於粒度化和組織在數據庫中使用的數據。 在第4章中將詳細介紹規範化和應用範式的過程。在這個階段只需要知道規範化是用於將數據劃分到單獨表中的方法或公式——根據一組規則。 不信任將視圖用於除了安全性目標之外的任何事情