Struct mupdf_sys::fz_locks_context [−][src]
Locking functions
MuPDF is kept deliberately free of any knowledge of particular threading systems. As such, in order for safe multi-threaded operation, we rely on callbacks to client provided functions.
A client is expected to provide FZ_LOCK_MAX number of mutexes, and a function to lock/unlock each of them. These may be recursive mutexes, but do not have to be.
If a client does not intend to use multiple threads, then it may pass NULL instead of a lock structure.
In order to avoid deadlocks, we have one simple rule internally as to how we use locks: We can never take lock n when we already hold any lock i, where 0 <= i <= n. In order to verify this, we have some debugging code, that can be enabled by defining FITZ_DEBUG_LOCKING.
Fields
user: *mut c_void
lock: Option<unsafe extern "C" fn(user: *mut c_void, lock: c_int)>
unlock: Option<unsafe extern "C" fn(user: *mut c_void, lock: c_int)>
Trait Implementations
impl Clone for fz_locks_context
[src]
fn clone(&self) -> fz_locks_context
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for fz_locks_context
[src]
impl Debug for fz_locks_context
[src]
Auto Trait Implementations
impl RefUnwindSafe for fz_locks_context
impl !Send for fz_locks_context
impl !Sync for fz_locks_context
impl Unpin for fz_locks_context
impl UnwindSafe for fz_locks_context
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,