libevent bufferevent线程安全

main函数代码

  1. 在bufferevent_socket_new之前调用以下方法
evthread_use_pthreads();
evthread_make_base_notifiable(pEventBase);
  1. bufferevent_socket_new加入参数BEV_OPT_THREADSAFE
struct bufferevent *pBufEv = bufferevent_socket_new(pEventBase, -1, BEV_OPT_CLOSE_ON_FREE | BEV_OPT_THREADSAFE);

CMakeLists.txt配置

cmake_minimum_required(VERSION 2.8.4)
project(leo_gateway)

set(CMAKE_CXX_STANDARD 14)

set(ROOT_DIR /abc)
set(EXECUTABLE_OUTPUT_PATH ${ROOT_DIR}/bin)

include_directories(${ROOT_DIR}/lib/libevent/include)
link_directories(${ROOT_DIR}/lib/libevent/lib)
link_libraries(event)

add_executable(test main.cpp)

target_link_libraries(test event event_pthreads pthread )

注:必须加入event_pthreads

示例

  1. 使用pthread测试多线程锁的问题
void *t1_cb(void *args) {
    struct bufferevent *pBufEv = (struct bufferevent *) args;
    bufferevent_lock(pBufEv);
    cout << "pthread_create1 ===============" << endl;
    sleep(4);
    bufferevent_unlock(pBufEv);
}
pthread_t t1;
int ret1 = pthread_create(&t1, NULL, t1_cb, pBufEv);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值