<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 5.1 運行循環 一旦有了一個已經注冊了某些事件的 event_base(關于如何創建和注冊事件請看下一節 ), 就需要讓 libevent 等待事件并且通知事件的發生。 ```cpp #define EVLOOP_ONCE 0x01 #define EVLOOP_NONBLOCK 0x02 #define EVLOOP_NO_EXIT_ON_EMPTY 0x04 int event_base_loop(struct event_base *base, int flags); ``` 默認情況下,event_base_loop()函數運行 event_base 直到其中沒有已經注冊的事件為止。執行循環的時候 ,函數重復地檢查是否有任何已經注冊的事件被觸發 (比如說,讀事件 的文件描述符已經就緒,可以讀取了;或者超時事件的超時時間即將到達 )。如果有事件被觸發,函數標記被觸發的事件為 “激活的”,并且執行這些事件。 在 flags 參數中設置一個或者多個標志就可以改變 event_base_loop()的行為。如果設置了 EVLOOP_ONCE ,循環將等待某些事件成為激活的 ,執行激活的事件直到沒有更多的事件可以執行,然會返回。如果設置了 EVLOOP_NONBLOCK,循環不會等待事件被觸發: 循環將僅僅檢測是否有事件已經就緒,可以立即觸發,如果有,則執行事件的回調。 完成工作后,如果正常退出, event_base_loop()返回0;如果因為后端中的某些未處理 錯誤而退出,則返回 -1。 為幫助理解,這里給出 event_base_loop()的算法概要: ```cpp while (any events are registered with the loop, or EVLOOP_NO_EXIT_ON_EMPTY was set) { if (EVLOOP_NONBLOCK was set, or any events are already active) If any registered events have triggered, mark them active. else Wait until at least one event has triggered, and mark it active. for (p = 0; p < n_priorities; ++p) { if (any event with priority of p is active) { Run all active events with priority of p. break; /* Do not run any events of a less important priority */ } } if (EVLOOP_ONCE was set or EVLOOP_NONBLOCK was set) break; } ``` 為方便起見,也可以調用 ```cpp int event_base_dispatch(struct event_base *base); ``` event_base_dispatch ()等同于沒有設置標志的 event_base_loop ( )。所以, event_base_dispatch ()將一直運行,直到沒有已經注冊的事件了,或者調用 了 event_base_loopbreak()或者 event_base_loopexit()為止。 這些函數定義在<event2/event.h>中,從 libevent 1.0版就存在了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看