关键步骤:
- 初始化线程库:在程序开始时,调用
evthread_use_pthreads()
来初始化libevent对多线程的支持,确保其使用POSIX线程库。
- 创建事件基础结构:使用
event_base_new()
创建一个事件基础结构event_base
,这是libevent的核心数据结构,用于管理所有事件。
- 设置锁:为了保证线程安全,需要在
event_base
上设置锁。可以使用event_base_set_flag()
函数,并传入EVENT_BASE_FLAG_THREADSAFE
标志。
主要代码片段:
#include <event2/event.h>
#include <event2/thread.h>
#include <iostream>
int main() {
// 初始化线程库
evthread_use_pthreads();
// 创建事件基础结构
event_base* base = event_base_new();
if (!base) {
std::cerr << "Could not initialize libevent!" << std::endl;
return 1;
}
// 设置线程安全标志
event_base_set_flag(base, EVENT_BASE_FLAG_THREADSAFE);
// 在此处添加事件处理逻辑等
// 释放事件基础结构
event_base_free(base);
return 0;
}