Thanks Nick, I'll check again myself in the source. Marco
On Wed, Feb 2, 2011 at 9:49 AM, Nick Mathewson <[email protected]> wrote: > On Mon, Jan 31, 2011 at 12:42 PM, Marco <[email protected]> wrote: > > Hi everyone, simple question.. > > > > 2 threads, T1 is in the event loop, T2 does some other things. > > Assume that I have a safe way of communicating between T1 and T2. > > > > I'm planning to use T2 to create http requests objects and then give them > to > > T1 to actually perform the request, i.e.: > > > > T2 calls > > - evhttp_connection_base_new > > - evhttp_connection_set_timeout > > - evhttp_connection_set_retries > > - evhttp_connection_set_closecb > > - evhttp_request_new > > > > Then T2 passes the evhttp_connection and evhttp_request to T1, who calls > > evhttp_make_request. > > (again, assume this message passing is implemeted safely) > > > > Is this thread safe? > > Or does any of the functions invoked by T2 modify the event base (owned > by > > T1)? > > Hm. All I can go with in response here is that "evhttp is not > threadsafe"; nobody has done the sufficient thread-safety analysis on > it. From what I can see, evhttp_connection_base_new makes a > non-threadsafe bufferevent, which will indeed add and remove events > from the event base. bufferevent_set_timeout, called by > evhttp_conection_set_timeout, also manipulates events. > > I think you *might* be okay here, but I really can't guarantee it > unless somebody takes a good hard look at the evhttp code in question. > > -- > Nick > *********************************************************************** > To unsubscribe, send an e-mail to [email protected] with > unsubscribe libevent-users in the body. >
