CALENDAR

2008年2月
« 1月   3月 »
 123
45678910
11121314151617
18192021222324
2526272829  

CATEGORIES

ARCHIVES

あわせて読みたい

  • LOADING...

libevent + 使い方

日本語でlibeventの解説をしているページが少ないので、使用方法などメモ。

インストール

http://www.monkey.org/~provos/libevent/

libevent-1.3e.tar.gz をダウンロード。
* 2009-02-22 時点では、libevent-1.4.9-stable.tar.gz が最新。

$ ./configure --prefix=/usr/local/libevent-1.3e
$ make
$ make install

仕組みについて

configure 時に、epoll, select, poll, kqueue などの通知メカニズムの中から、
使用可能かつもっとも scalable なメカニズムを選択する。
configure オプションで通知メカニズムの選択は出来ない。

超簡潔使用法

1.event_init で初期化
2.event_set でイベント設定
3.event_add で設定したイベントを追加
4.event_del で追加したイベントを削除
5.event_dispatch でイベント通知の検知を開始

ソース(例えばlibevent-1.3e)のsampleディレクトリにサンプルソースコードがある。

イベントフラグ関連

EV_READ
読み込みイベント。

EV_WRITE
書き込みイベント

EV_PERSIST
継続フラグ。
指定するとイベント通知を受け取った後も継続してイベント通知を受け取る。
逆に指定しなければ、イベント通知を受け取った後、内部で設定したイベントが削除され、
再度 event_add しない限り、イベント通知を受け取らなくなる。
また、event_add の第2引数に timeval 構造体を渡していると、
EV_PERSISTを追加していても、イベント通知を受け取った後、
内部で設定したイベントが削除される。
timeval 構造体を渡した場合、イベント通知を受け取った後、
もう一度 event_add を行う必要がある。

サーバーサンプル

main.cpp

ごちゃごちゃして見にくくなった orz

せっかくなのでアップップ。
sample.zip

おしまい

ちなみにうちの MacBook さんでは、kqueueが選択された。

関連:チャットサーバのサンプル

  • このエントリーをはてなブックマークに追加
  • はてなブックマーク - libevent + 使い方
  • Share on Facebook
  • Post to Google Buzz
  • Bookmark this on Yahoo Bookmark
  • Bookmark this on Livedoor Clip
  • Share on FriendFeed

関連エントリー:

libevent + static link

libevent + チャットサーバ

autotools + 使い方

Automake + 条件コンパイル

TCPサーバ + サンプル

1 comment to libevent + 使い方

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="">