Serious-Engine/Sources/LWSkaExporter/SDK/lwmtutil.h

37 lines
1.1 KiB
C
Raw Permalink Normal View History

2016-03-11 14:57:17 +01:00
#ifndef LWSDK_MTUTIL_H
#define LWSDK_MTUTIL_H
/****
*
* Some plugin services may be called from within a LW render thread which
* implies a need for methods for a plugin to protect its global data. The
* MTUtil functions provide that service thus allowing a plugin to be threaad
* safe.
*
* USAGE:
*
* create - this method returns a LWMTUtilID which must be passed to the lock and
* unlock methods. Each MTUtilID allows up to 10 independent mutexes
* (binary semaphores) to be used, indexed 0 - 9. Return NULL on failure.
*
* lock - takes a MTUtilID and a mutex index and blocks until the mutex becomes
* available. Returns success.
*
* unlock - releases the mutex specified by the index. Returns success.
*/
typedef void * LWMTUtilID;
#define LWMTUTILFUNCS_GLOBAL "MultiThreading Utilities"
typedef struct st_LWMTUtilFuncs {
LWMTUtilID (*create) (void);
void (*destroy) (LWMTUtilID mtid);
int (*lock) (LWMTUtilID mtid, int mutexID);
int (*unlock) (LWMTUtilID mtid, int mutexID);
} LWMTUtilFuncs;
#endif