libevent
声称是线程安全的,但我想知道这是否意味着我们不需要运行受互斥锁保护的bufferevent_write
。
我想在几个不同的线程中运行bufferevent_write
的{{1}}函数,它们可以同时执行。
根据文档,libevent
函数将数据添加到bufferevent_write
的输出缓冲区,因此需要保护缓冲区,但我不知道它是否已被互斥锁保护或者如果我必须手动保护它?
答案 0 :(得分:0)
通过查看libevent
的源代码,似乎不包括互斥锁
bufferevent_write
来电evbuffer_add
。我在这里找到了这个函数的源代码:http://transmission.sourcearchive.com/documentation/1.75/event_8h_b652a2f82d23509713258a6e44697164.html#b652a2f82d23509713258a6e44697164
所以我想我必须把这两个函数称为:
void evbuffer_lock(struct evbuffer *buf);
void evbuffer_unlock(struct evbuffer *buf);