Libevent 使用多线程

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:49   1018   0

1 、evthread_use_pthreads();

int CTcpServer::Start()
{
if(m_bStartFlag)
{
printf("repeat start");
return -2;
}


if (NULL == m_pEventBase)
{
evthread_use_pthreads(); // 1
m_pEventBase = event_base_new(); /* 初始化event_base */
if(NULL == m_pEventBase)
{
printf("m_pEventBase is NULL");
return -1;
}
evthread_make_base_notifiable(m_pEventBase); //2
}


2、 evthread_make_base_notifiable(m_pEventBase);


3、void CTcpServer::accept_conn_cb(struct evconnlistener *listener,evutil_socket_t fd, struct sockaddr *address, int socklen)
{
struct event_base *base = evconnlistener_get_base(listener);
if(NULL == base)
{
printf("base is NULL");
return ;
}

struct bufferevent *bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE|BEV_OPT_THREADSAFE); //3

//bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE|BEV_OPT_THREADSAFE);
中 加上 BEV_OPT_THREADSAFE

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP