[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] mixing libevent and boost::asio



On Thu, Nov 20, 2014 at 01:27:14PM +0100, svante karlsson wrote:
> Thanks,
> 
> First of all I made a typo in my own comments - the return parameter from
> boost::asio::poll is the number of handlers it did run (not one).

You are right.

I've just checked io_service.poll():
$ strace -eepoll_wait ./a.out
pre poll
epoll_wait(4, {{EPOLLIN, {u32=11063784, u64=11063784}}, {EPOLLIN, {u32=11063888, u64=11063888}}, {EPOLLIN, {u32=11063796, u64=11063796}}}, 128, 0) = 3
post poll

timeout=0 === no blocking.

> According to spec  it runs handlers that are ready to run, without blocking
> and I'm pretty sure it does what it says (Not blocking)
> 
> Second, it's a bit worrying (for me at least) that the libevent equivalent
> call does indeed block - Do you have any hints on when it's actually
> blocking?
> >(event_base_loop(_event_base, EVLOOP_NONBLOCK);

I was wrong, sorry, it will not block with EVLOOP_NONBLOCK.

> 
> Third, I  also agrees on "and personally I don't think that it is sane to
> use two event loops in one application", BUT either I rewrite an existing
> (proprietary) proxy based on asio or an existing db client library
> (aerospike db) based on libevent.
> 
> I'm thinking I might get away with handling the server code from asio and
> make polling calls to libevent queue in asio callbacks on events - both
> timer and io related ones but I'm looking for a cleaner solution.
> 
> I've done the same for a libcurl based client in the past and it was
> possible to get to the sockets before libcurl actually waited for io.

libcurl is something very different, it is not _aio_ library, but AFAIR it
allow to multiplexing stuff using custom event loop (i.e. you could get
internal fd), that's why you could do this using libcurl I suppose.
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.