threads

threads - interfaces for thread handling

set of generic threading related routines should work with pthreads, Windows native or TLS threads

Author(s): Daniel Veillard

Synopsis

typedef struct _xmlMutex xmlMutex;
typedef xmlMutex * xmlMutexPtr;
typedef struct _xmlRMutex xmlRMutex;
typedef xmlRMutex * xmlRMutexPtr;
void	xmlCleanupThreads		(void);
int	xmlDllMain			(void * hinstDLL, 
unsigned long fdwReason,
void * lpvReserved); void xmlFreeMutex (xmlMutexPtr tok); void xmlFreeRMutex (xmlRMutexPtr tok); xmlGlobalStatePtr xmlGetGlobalState (void); int xmlGetThreadId (void); void xmlInitThreads (void); int xmlIsMainThread (void); void xmlLockLibrary (void); void xmlMutexLock (xmlMutexPtr tok); void xmlMutexUnlock (xmlMutexPtr tok); xmlMutexPtr xmlNewMutex (void); xmlRMutexPtr xmlNewRMutex (void); void xmlRMutexLock (xmlRMutexPtr tok); void xmlRMutexUnlock (xmlRMutexPtr tok); void xmlUnlockLibrary (void);

Description

Details

Structure xmlMutex

struct _xmlMutex {
The content of this structure is not made public by the API.
} xmlMutex;


Typedef xmlMutexPtr

xmlMutex * xmlMutexPtr;


Structure xmlRMutex

struct _xmlRMutex {
The content of this structure is not made public by the API.
} xmlRMutex;


Typedef xmlRMutexPtr

xmlRMutex * xmlRMutexPtr;


xmlCleanupThreads ()

void	xmlCleanupThreads		(void)

DEPRECATED: This function will be made private. Call xmlCleanupParser to free global state but see the warnings there. xmlCleanupParser should be only called once at program exit. In most cases, you don't have call cleanup functions at all. xmlCleanupThreads() is used to to cleanup all the thread related data of the libxml2 library once processing has ended. WARNING: if your application is multithreaded or has plugin support calling this may crash the application if another thread or a plugin is still using libxml2. It's sometimes very hard to guess if libxml2 is in use in the application, some libraries or plugins may use it without notice. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind !


xmlDllMain ()

int	xmlDllMain			(void * hinstDLL, 
unsigned long fdwReason,
void * lpvReserved)

hinstDLL:
fdwReason:
lpvReserved:
Returns:

xmlFreeMutex ()

void	xmlFreeMutex			(xmlMutexPtr tok)

xmlFreeMutex() is used to reclaim resources associated with a libxml2 token struct.

tok: the simple mutex

xmlFreeRMutex ()

void	xmlFreeRMutex			(xmlRMutexPtr tok)

xmlRFreeMutex() is used to reclaim resources associated with a reentrant mutex.

tok: the reentrant mutex

xmlGetGlobalState ()

xmlGlobalStatePtr	xmlGetGlobalState	(void)

xmlGetGlobalState() is called to retrieve the global state for a thread.

Returns: the thread global state or NULL in case of error

xmlGetThreadId ()

int	xmlGetThreadId			(void)

xmlGetThreadId() find the current thread ID number Note that this is likely to be broken on some platforms using pthreads as the specification doesn't mandate pthread_t to be an integer type

Returns: the current thread ID number

xmlInitThreads ()

void	xmlInitThreads			(void)

DEPRECATED: This function will be made private. Call xmlInitParser to initialize the library. xmlInitThreads() is used to to initialize all the thread related data of the libxml2 library.


xmlIsMainThread ()

int	xmlIsMainThread			(void)

xmlIsMainThread() check whether the current thread is the main thread.

Returns: 1 if the current thread is the main thread, 0 otherwise

xmlLockLibrary ()

void	xmlLockLibrary			(void)

xmlLockLibrary() is used to take out a re-entrant lock on the libxml2 library.


xmlMutexLock ()

void	xmlMutexLock			(xmlMutexPtr tok)

xmlMutexLock() is used to lock a libxml2 token.

tok: the simple mutex

xmlMutexUnlock ()

void	xmlMutexUnlock			(xmlMutexPtr tok)

xmlMutexUnlock() is used to unlock a libxml2 token.

tok: the simple mutex

xmlNewMutex ()

xmlMutexPtr	xmlNewMutex		(void)

xmlNewMutex() is used to allocate a libxml2 token struct for use in synchronizing access to data.

Returns: a new simple mutex pointer or NULL in case of error

xmlNewRMutex ()

xmlRMutexPtr	xmlNewRMutex		(void)

xmlRNewMutex() is used to allocate a reentrant mutex for use in synchronizing access to data. token_r is a re-entrant lock and thus useful for synchronizing access to data structures that may be manipulated in a recursive fashion.

Returns: the new reentrant mutex pointer or NULL in case of error

xmlRMutexLock ()

void	xmlRMutexLock			(xmlRMutexPtr tok)

xmlRMutexLock() is used to lock a libxml2 token_r.

tok: the reentrant mutex

xmlRMutexUnlock ()

void	xmlRMutexUnlock			(xmlRMutexPtr tok)

xmlRMutexUnlock() is used to unlock a libxml2 token_r.

tok: the reentrant mutex

xmlUnlockLibrary ()

void	xmlUnlockLibrary		(void)

xmlUnlockLibrary() is used to release a re-entrant lock on the libxml2 library.