#### Thread Safety

Aravis is not thread safe, which means one can not use the same object simultaneously from different threads, without using mutexes. But it is perfectly fine to use different aravis objects in different threads, with the exception of the `ArvInterface` instances.

A possible trap is that glib signal callbacks are called from the thread that emitted the corresponding signal. For example, the `ArvStream::new-buffer` callback is emitted from the stream packet receiving thread, which is an internal thread created by `ArvGvStream`. It is not safe to use `ArvDevice` and some `ArvStream` functions from this callback without using mutexes. The exceptions are `arv_stream_push_buffer()`, `arv_stream_pop_buffer()`, `arv_stream_try_pop_buffer()` and `arv_stream_timeout_pop_buffer()`.