On Sun, Dec 28, 2014 at 01:30:36PM +0000, Gerry Sweeney wrote: > Hi, > > I am new to lib event so please forgive me if this is a noob question. I ran > into a problem usinglib event and wonder if anyone can help > > My question I hope is very simple: - > > I am trying to create a simple multi-threaded HTTP server. > > I create and bind a non-blocking listening socket on port 8080, then for each > thread I want to create to process HTTP requests I call the following > > event_base_new() > evhttp_new() > evhttp_accept_socket_with_handle() > evhttp_set_gencb() > pthread_create(my_http_worker_thread_fn, base); > > Then in the thread function for each worker thread I call > event_base_dispatch((struct event_base*)arg); > > Everything works as expected and I can process HTTP requests. The problem I > am having is shutting down cleanly. > > After my main thread creates the worker threads I wait for a return key press > on getchar() so I can press return to shutdown, after which I call > event_base_loopbreak() on each event base I created, then I call > pthread_join() from my main thread on each worker thread handle to wait for > all threads to complete. > > The problem is, after calling event_base_loopbreak() I am expecting > event_base_dispatch() to return but it never does, looking at the call stack > for each thread they all appear to be waiting for an event. So I end up stuck > waiting for threads to end which never do.
The loop must breaks after event_base_loopbreak(). Could you try debug mode and analyze it's messages? If you could write 50L code sample to reproduce this problem - I could have a look. Cheers, Azat. *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
