2

libeventbufferevent_writeはスレッドセーフであると主張していますが、それはミューテックスによって保護された状態で実行する必要がないことを意味するのでしょうか。

bufferevent_writeの関数を複数の異なるスレッドで実行したいのですがlibevent、それらは同時に実行できます。

ドキュメントによると、bufferevent_write関数は の出力バッファーにデータを追加するbuffereventため、バッファーを保護する必要がありますが、既にミューテックスによって保護されているのか、手動で保護する必要があるのか​​ わかりません。

4

1 に答える 1

0

ソースコードをlibevent見ると、ミューテックスが含まれていないようです。
bufferevent_writeを呼び出しますevbuffer_add。ここでこの関数のソース コードを見つけました: http://transmission.sourcearchive.com/documentation/1.75/event_8h_b652a2f82d23509713258a6e44697164.html#b652a2f82d23509713258a6e44697164
したがって、これら 2 つの関数を呼び出す必要があると思います。

void evbuffer_lock(struct evbuffer *buf);
void evbuffer_unlock(struct evbuffer *buf);
于 2013-07-18T23:03:20.620 に答える