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

Re: [Libevent-users] bufferevent and threads



Hi, I found and solved my problem.
I just added 'evthread_use_pthreads();' before 'event_base_dispatch(base);'
and 'BEV_OPT_THREADSAFE'
> bev = bufferevent_socket_new(base, newsock,
BEV_OPT_CLOSE_ON_FREE|BEV_OPT_THREADSAFE);

Bye.

Le 04/11/2010 14:46, Christophe ZBIERSKI a écrit :
> Hello,
>
> I made a daemon that receives data from a socket, data is read from
> callback (readcb) :
>   
>> bufferevent_setcb(bev, readcb, NULL, eventcb, conndata);
>>     
>
>  then it is given to a thread (because the treatment can be long). Then
> this is the thread that writes the result of the treatment on the socket.
>   
>> evbuffer_add(outputbuf, res, len);
>>     
> By doing like this, I have very long response time (several seconds),
> but if I add a timeout
>
>   
>> timeoutevent_assign(&timeout, base, -1, EV_PERSIST, timeout_cb,
>>     
> (void*)&pid);
>   
>> evutil_timerclear(&tv);
>> tv.tv_sec = 0;
>> tv.tv_usec = 10000L;    // 10 ms
>> event_add(&timeout, &tv);
>>     
> I have the answer immediately (10ms)
>
> I tried using functions like:
> bufferevent_flush(bev, EV_WRITE, BEV_FLUSH) or
> bufferevent_setwatermark(bev, EV_WRITE, 0, 0);
>
> I'm using libevent 2.0.8
>
> Christophe
>
> ***********************************************************************
> To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
> unsubscribe libevent-users    in the body.
>
>   


***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.