<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856690</guid>
        <pubDate>Tue, 21 Dec 2021 20:59:38 +0000</pubDate>
        <title>Libevent - запуск основного цикла</title>
        <link>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856690</link>
        <description><![CDATA[Oleg2004: Посмотрите вот <a class='tag-url' href='https://russianblogs.com/article/82912066937/' target='_blank'>https://russianblogs.com/article/82912066937/</a>здесь...по моем у заслуживает внимания]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856687</guid>
        <pubDate>Tue, 21 Dec 2021 18:07:59 +0000</pubDate>
        <title>Libevent - запуск основного цикла</title>
        <link>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856687</link>
        <description><![CDATA[Optimus1: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=424869&view=findpost&p=3856683'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Oleg2004 &#064; <time class="tag-quote__quoted-time" datetime="2021-12-21T17:28:55+00:00">21.12.21, 17:28</time></span><div class='quote '>Я почитал немного и раздела о регистрации не нашел. Или вы регистрируете неким образом все таки?</div></div><br>
<br>
Скорее всего не регистрирую, раздела о регистрации тоже не нашел.<br>
Но дело в том, что флаг EVLOOP_NO_EXIT_ON_EMPTY - работает заявленным образом - даже если нет не одного события, даже если я вообще не одного сокета не создал - EVLOOP_NO_EXIT_ON_EMPTY запускает бесконечный цикл в ожидании этих событий.<br>
А вот EVLOOP_ONCE  - выходит сразу, что теоретически не должно быть и EVLOOP_ONCE  должен ввести себя так же, как и EVLOOP_NO_EXIT_ON_EMPTY  до появление хотя бы первого события.]]></description>
        <author>Optimus1</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856683</guid>
        <pubDate>Tue, 21 Dec 2021 17:28:55 +0000</pubDate>
        <title>Libevent - запуск основного цикла</title>
        <link>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856683</link>
        <description><![CDATA[Oleg2004: В источникек написано<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Once you have an event_base with some events registered (<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">see the next section about how to create and register events</span></strong>)</div></div><br>
Я почитал немного и раздела о регистрации не нашел. Или вы регистрируете неким образом все таки?]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856678</guid>
        <pubDate>Tue, 21 Dec 2021 13:54:43 +0000</pubDate>
        <title>Libevent - запуск основного цикла</title>
        <link>https://forum.sources.ru/index.php?showtopic=424869&amp;view=findpost&amp;p=3856678</link>
        <description><![CDATA[Optimus1: Здравствуйте,<br>
<br>
Подскажите пожалуйста, вот читаю книгу по Libevent: <a class='tag-url' href='https://www.seul.org/~nickm/libevent-book/Ref3_eventloop.html' target='_blank'>https://www.seul.org/~nickm/libevent-book/R..._eventloop.html</a><br>
<br>
Там написано, что функция event_base_loop() — запускает цикл обработки событий и у event_base_loop есть три флага:<br>
<br>
-EVLOOP_ONCE: Если установлено EVLOOP_ONCE, то цикл будет ждать, пока некоторые события не станут активными, затем запустить активные события до тех пор, пока не останется больше для запуска, а затем вернется.<br>
-EVLOOP_NONBLOCK : Если EVLOOP_NONBLOCK установлен, то цикл не будет ждать запуска событий: он будет только проверять, готовы ли какие-либо события к немедленному запуску, и запускать их обратные вызовы, если это так.<br>
-EVLOOP_NO_EXIT_ON_EMPTY: Если вы установите EVLOOP_NO_EXIT_ON_EMPTY, цикл будет продолжаться до тех пор, пока кто-нибудь не вызовет event_base_loopbreak () или не вызовет event_base_loopexit (), или пока не возникнет ошибка.<br>
<br>
<br>
Я не могу понять, я правильно понимаю, что EVLOOP_ONCE — говорит event_base_loop — ждать пока не появится хотя бы одно событие, и если появилось или было в момент запуска(одно или более) то обработать их, если события в очереди закончились, то завершить свою работу ?? Если я понимаю правильно, то это почему то не работает.<br>
<br>
<br>
Работу EVLOOP_ONCE я проверял вот таким кодом (под Windows VS2019):<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;iostream&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;string&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;vector&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;thread&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;chrono&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;event2/bufferevent.h&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;event2/buffer.h&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;#include &#60;event2/event.h&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Подключаем Windows DDL-lib:</div><div class="code_line">&nbsp;&nbsp; &nbsp;#pragma comment(lib, &quot;Normaliz.lib&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;#pragma comment(lib, &quot;Ws2_32.lib&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;#pragma comment(lib, &quot;Wldap32.lib&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;#pragma comment(lib, &quot;Crypt32.lib&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;#pragma comment(lib, &quot;advapi32.lib&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;#pragma comment(lib, &quot;Iphlpapi.lib&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int main()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WORD my_version_Winsock = MAKEWORD(2, 2); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WSADATA my_wsadata_struct; </div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int my_WSAStartup = WSAStartup(my_version_Winsock, &amp;my_wsadata_struct); &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;struct event_base* Event_base = event_base_new(); &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;event_base_loop(Event_base, EVLOOP_ONCE ); //запускаем цикл, который теоретически, если я правильно понял - должен дождаться хотя бы одного события</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//Однако event_base_loop - ни ждет ни каких событий и сразу завершается.</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;event_base_free(Event_base); &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
При этом если я меняю флаг EVLOOP_ONCE  на EVLOOP_NO_EXIT_ON_EMPTY - то цикл крутится бесконечно, как и заявляется для флага EVLOOP_NO_EXIT_ON_EMPTY.<br>
А вот флаг EVLOOP_ONCE  - не ждет событий, а сразу выходит. Получается, что EVLOOP_ONCE  - работает не корректно, не так, как заявляется в документации ?]]></description>
        <author>Optimus1</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	