2

libevent声称是线程安全的,但我想知道这是否意味着我们不需要运行bufferevent_write受互斥锁保护。

我想在几个不同的线程中运行函数bufferevent_writelibevent它们可以同时执行。

根据文档,bufferevent_write函数将数据添加到 abufferevent的输出缓冲区,因此它需要保护缓冲区,但我不知道它是否已经受到互斥锁的保护,或者我是否必须手动保护它?

4

1 回答 1

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);
于 2013-07-18T23:03:20.620 回答