Должен ли я защищать bufferevent_write с помощью мьютекса на многопоточном сервере?

libevent утверждает, что является потокобезопасным, но мне интересно, означает ли это, что нам не нужно запускать bufferevent_write, защищенный мьютексами.

Я хотел бы запустить функцию bufferevent_write из libevent в нескольких разных потоках, и они могут выполняться одновременно.

Согласно документации, функция bufferevent_write добавляет данные в выходной буфер bufferevent, поэтому ей нужно защитить буфер, но я не знаю, защищен ли он уже мьютексом или мне нужно защищать его вручную?


person JMBise    schedule 18.07.2013    source источник
comment
Вас не волнует, в каком порядке располагаются данные?   -  person David Schwartz    schedule 19.07.2013
comment
Нет, мне все равно, порядок не имеет значения   -  person JMBise    schedule 19.07.2013


Ответы (1)


Глядя на исходный код 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);
person JMBise    schedule 18.07.2013