涉及到的API:
1) evthread_use_pthreads()
2)
struct bufferevent *bev = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE | BEV_OPT_THREADSAFE);
void bufferevent_lock(struct bufferevent *bufev); void bufferevent_unlock(struct bufferevent *bufev);
Locking the bufferevent with this function will lock its associated evbuffersas well.
3)
evbuffer_enable_locking(bev->output,null)
evbuffer_enable_locking(bev->input,null)
void evbuffer_lock(struct evbuffer *buf); void evbuffer_unlock(struct evbuffer *buf);
/* epthreads.c */ #include <stdlib.h> #include <event2/event.h> #include <event2/bufferevent.h> #include <event2/thread.h> #include <event2/util.h> #include <pthread.h> int main(int argc, const char *argv[]) { struct event_base *base = event_base_new(); int options =