我是否必须在多线程服务器中使用互斥锁保护bufferevent_write

时间:2013-07-18 22:14:49

标签: c multithreading mutex libevent

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

我想在几个不同的线程中运行bufferevent_write的{​​{1}}函数,它们可以同时执行。

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

1 个答案:

答案 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);