libevent

libevent-2.0.10 のマルチスレッド対応

libevent 2系では、本体でマルチスレッド対応がなされているようです。 ただ、libevent 1系と同じAPIを使ってはだめなようで、 event_base = event_init();↓ event_base = event_base_new(); evhttp = evhttp_start("localhost", 80);↓ evhttp = evhttp_new(…

複数の event_base を使う場合

libevent で、複数の event_base を使いたい場合、man event を良く読めば、実は書いてあるのですが、 単純な勘違いで、うまくいかない場合があります。man event 抜粋 THREAD SAFE EVENTS Libevent has experimental support for thread-safe events. When …

bufferevent

libevent では、ディスクリプタへの読み書きがとても簡単に実装できます。 bufev = bufferevent_new(fd, readcb, writecb, errorcb, NULL); bufferevent_enable(bufev, EV_READ);fd は対象ディスクリプタ readcb, writecb, errorcb へはそれぞれ読み、書き、…

epoll を使ってクライアントコードを書いてみた

今回は libevent ではなく、epoll を生で使ってサーバ/クライアントのセットを書いていました。 クライアントがなぜか必ずタイムアウトして終了するという謎の現象に悩まされましたが、 よくよくみてみると、 ev.events = (u_int32_t) EPOLLIN;としていたこ…

libevent はこんなに便利(2)

libevent はとても便利ですが、日本語の資料が少ないので、ちょっとした tips を紹介いたします。event_dispatch() 後に綺麗に終了処理をしたいシグナルで割り込まれたら何らかの処理をしてプログラムを終了したい場合ですね。私は、この場合以下の様なコー…