30 #ifndef _CPL_MULTIPROC_H_INCLUDED_
31 #define _CPL_MULTIPROC_H_INCLUDED_
42 #if defined(WIN32) && !defined(CPL_MULTIPROC_STUB)
43 # define CPL_MULTIPROC_WIN32
46 #if !defined(CPL_MULTIPROC_WIN32) && !defined(CPL_MULTIPROC_PTHREAD) \
47 && !defined(CPL_MULTIPROC_STUB) && !defined(CPL_MULTIPROC_NONE)
48 # define CPL_MULTIPROC_STUB
53 typedef void (*CPLThreadFunc)(
void *);
55 void CPL_DLL *CPLLockFile(
const char *pszPath,
double dfWaitInSeconds );
56 void CPL_DLL CPLUnlockFile(
void *hLock );
58 void CPL_DLL *CPLCreateMutex();
59 int CPL_DLL CPLCreateOrAcquireMutex(
void **,
double dfWaitInSeconds );
60 int CPL_DLL CPLAcquireMutex(
void *hMutex,
double dfWaitInSeconds );
61 void CPL_DLL CPLReleaseMutex(
void *hMutex );
62 void CPL_DLL CPLDestroyMutex(
void *hMutex );
64 GIntBig CPL_DLL CPLGetPID();
65 int CPL_DLL CPLCreateThread( CPLThreadFunc pfnMain,
void *pArg );
66 void CPL_DLL CPLSleep(
double dfWaitInSeconds );
68 const char CPL_DLL *CPLGetThreadingModel();
74 #define CPLMutexHolderD(x) CPLMutexHolder oHolder(x,1000.0,__FILE__,__LINE__);
86 const char *pszFile = __FILE__,
87 int nLine = __LINE__ );
96 #define CTLS_RLBUFFERINFO 1
97 #define CTLS_DECDMSBUFFER 2
98 #define CTLS_CSVTABLEPTR 3
99 #define CTLS_CSVDEFAULTFILENAME 4
100 #define CTLS_ERRORCONTEXT 5
101 #define CTLS_UNUSED1 6
102 #define CTLS_PATHBUF 7
103 #define CTLS_SPRINTFBUF 8
104 #define CTLS_SWQ_ERRBUF 9
105 #define CTLS_CPLSPRINTF 10
106 #define CTLS_RESPONSIBLEPID 11
107 #define CTLS_VERSIONINFO 12
108 #define CTLS_VERSIONINFO_LICENCE 13
109 #define CTLS_CONFIGOPTIONS 14
110 #define CTLS_FINDFILE 15
115 void CPL_DLL * CPLGetTLS(
int nIndex );
116 void CPL_DLL CPLSetTLS(
int nIndex,
void *pData,
int bFreeOnExit );
120 typedef void (*CPLTLSFreeFunc)(
void* pData );
121 void CPL_DLL CPLSetTLSWithFreeFunc(
int nIndex,
void *pData, CPLTLSFreeFunc pfnFree );
123 void CPL_DLL CPLCleanupTLS();