mupdf
Loading...
Searching...
No Matches
fz_locks_context Struct Reference

#include <context.h>

Public Attributes

void * user
void(* lock )(void *user, int lock)
void(* unlock )(void *user, int lock)

Detailed Description

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.

Member Data Documentation

◆ lock

void(* fz_locks_context::lock) (void *user, int lock)

◆ unlock

void(* fz_locks_context::unlock) (void *user, int lock)

◆ user

void* fz_locks_context::user

The documentation for this struct was generated from the following file:
  • /home/docs/checkouts/readthedocs.org/user_builds/mupdf/checkouts/1.28.0/include/mupdf/fitz/context.h