<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.pchero21.com/index.php?action=history&amp;feed=atom&amp;title=Libevent_R2%3A_Getting_an_event_base</id>
	<title>Libevent R2: Getting an event base - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.pchero21.com/index.php?action=history&amp;feed=atom&amp;title=Libevent_R2%3A_Getting_an_event_base"/>
	<link rel="alternate" type="text/html" href="http://wiki.pchero21.com/index.php?title=Libevent_R2:_Getting_an_event_base&amp;action=history"/>
	<updated>2026-04-16T16:52:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://wiki.pchero21.com/index.php?title=Libevent_R2:_Getting_an_event_base&amp;diff=140&amp;oldid=prev</id>
		<title>Pchero at 14:57, 28 January 2015</title>
		<link rel="alternate" type="text/html" href="http://wiki.pchero21.com/index.php?title=Libevent_R2:_Getting_an_event_base&amp;diff=140&amp;oldid=prev"/>
		<updated>2015-01-28T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.pchero21.com/index.php?title=Libevent_R2:_Getting_an_event_base&amp;amp;diff=140&amp;amp;oldid=138&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Pchero</name></author>
	</entry>
	<entry>
		<id>http://wiki.pchero21.com/index.php?title=Libevent_R2:_Getting_an_event_base&amp;diff=138&amp;oldid=prev</id>
		<title>Pchero: Created page with &quot;== Overview == 원문은 이곳&lt;ref&gt;http://www.wangafu.net/~nickm/libevent-book/Ref2_eventbase.html&lt;/ref&gt;에서 확인할 수 있다.  Libevent 를 사용하기전, 하나 혹...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.pchero21.com/index.php?title=Libevent_R2:_Getting_an_event_base&amp;diff=138&amp;oldid=prev"/>
		<updated>2015-01-28T13:02:35Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Overview == 원문은 이곳&amp;lt;ref&amp;gt;http://www.wangafu.net/~nickm/libevent-book/Ref2_eventbase.html&amp;lt;/ref&amp;gt;에서 확인할 수 있다.  Libevent 를 사용하기전, 하나 혹...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Overview ==&lt;br /&gt;
원문은 이곳&amp;lt;ref&amp;gt;http://www.wangafu.net/~nickm/libevent-book/Ref2_eventbase.html&amp;lt;/ref&amp;gt;에서 확인할 수 있다.&lt;br /&gt;
&lt;br /&gt;
Libevent 를 사용하기전, 하나 혹은 그 이상의 event_base_structure를 생성해야 한다. 각각의 event_base_structure 는 설정된 이벤트를 감시하며, Poll 한다.&lt;br /&gt;
&lt;br /&gt;
만약 event_base 가 Locking 을 사용한다면 멀티 스레드 환경에서도 사용이 가능하지만, 만약 사용하지 않는다면 반드시 싱글 스레드 환경에서만 사용해야 한다. 그리고 멀티 스레드 IO polling 을 하고자 한다면, 각각의 스레드마다 event_base 를 생성해 주어야 한다.&lt;br /&gt;
&lt;br /&gt;
각각의 event_base는 어떤 이벤트들이 준비됐는지 확인하기 위해 &amp;quot;메소드&amp;quot; 혹은 &amp;quot;백엔드&amp;quot;를 사용한다. 다음과 같은 메소드들이 있다.&lt;br /&gt;
* select&lt;br /&gt;
* poll&lt;br /&gt;
* epoll&lt;br /&gt;
* kqueue&lt;br /&gt;
* devpoll&lt;br /&gt;
* evport&lt;br /&gt;
* win32&lt;br /&gt;
&lt;br /&gt;
사용자는 환경 변수를 통해서 특정 백엔드/메소드 를 비활성화 시킬 수 있다. 예를 들어 kqueue 를 비활성화 시키고 싶다면 EVENT_NOKQUEUE 환경변수를 설정하면 된다. 만약 프로그램 내에서 특정 백엔드/메소드를 비활성화 시키고 싶다면 event_config_avoid_method() 를 사용하면 된다.&lt;br /&gt;
&lt;br /&gt;
== Setting up a default event_base ==&lt;br /&gt;
event_base_new() 함수는 새로운 event base를 기본 설정상태로 생성하고 리턴한다. 환경 변수를 검사하고 새로 생성한 event_base 포인터를 넘겨주는데, 만약 에러가 발생하면 NULL을 리턴한다.&lt;br /&gt;
&lt;br /&gt;
만약 여러 개의 메소드가 있다면, 동작 OS 에서 가장 빨리 작동하는 메소드를 자동으로 선택한다.&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
struct event_base *event_base_new(void);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
대부분의 프로그램에서는 이것만으로도 충분할 것이다. event_base_new() 함수는 &amp;lt;event2/event.h&amp;gt; 파일에 선언되어 있으며, Libevent 1.4.3 이후부터 사용 가능하다.&lt;br /&gt;
&lt;br /&gt;
== Setting up a complicated event_base ==&lt;br /&gt;
만약 event_base 에 대해 더 세밀한 설정을 하고 싶다면 event_config 를 사용할 수 있다. event_config 에 원하는 내용을 설정하고, event_base 생성시 인자값으로 사용할 수 있다.&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
struct event_config *event_config_new(void);&lt;br /&gt;
struct event_base *event_base_new_with_config(const struct event_config *cfg);&lt;br /&gt;
void event_config_free(struct event_config *cfg);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위 함수들을 event_base 와 함께 사용하고자 한다면 먼저 event_config_new() 를 사용해 event_config 를 생성하고, 다른 함수들을 통해 event_config 를 원하는 내용으로 설정한다. 그 후에, event_base_new_with_config() 함수와 함께 사용하여 event_base 를 생성하면 된다. 그리고, 사용이 끝난 event_config 는 event_config_free() 로 해제하면 된다.&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:libevent]]&lt;/div&gt;</summary>
		<author><name>Pchero</name></author>
	</entry>
</feed>