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 # undef CPL_MULTIPROC_PTHREAD
49 #if !defined(CPL_MULTIPROC_WIN32) && !defined(CPL_MULTIPROC_PTHREAD) \
50 && !defined(CPL_MULTIPROC_STUB) && !defined(CPL_MULTIPROC_NONE)
51 # define CPL_MULTIPROC_STUB
56 typedef void (*CPLThreadFunc)(
void *);
58 void CPL_DLL *CPLLockFile(
const char *pszPath,
double dfWaitInSeconds );
59 void CPL_DLL CPLUnlockFile(
void *hLock );
61 void CPL_DLL *CPLCreateMutex();
62 int CPL_DLL CPLCreateOrAcquireMutex(
void **,
double dfWaitInSeconds );
63 int CPL_DLL CPLAcquireMutex(
void *hMutex,
double dfWaitInSeconds );
64 void CPL_DLL CPLReleaseMutex(
void *hMutex );
65 void CPL_DLL CPLDestroyMutex(
void *hMutex );
67 GIntBig CPL_DLL CPLGetPID();
68 int CPL_DLL CPLCreateThread( CPLThreadFunc pfnMain,
void *pArg );
69 void CPL_DLL CPLSleep(
double dfWaitInSeconds );
71 const char CPL_DLL *CPLGetThreadingModel();
77 #define CPLMutexHolderD(x) CPLMutexHolder oHolder(x,1000.0,__FILE__,__LINE__);
89 const char *pszFile = __FILE__,
90 int nLine = __LINE__ );
99 #define CTLS_RLBUFFERINFO 1
100 #define CTLS_DECDMSBUFFER 2
101 #define CTLS_CSVTABLEPTR 3
102 #define CTLS_CSVDEFAULTFILENAME 4
103 #define CTLS_ERRORCONTEXT 5
104 #define CTLS_UNUSED1 6
105 #define CTLS_PATHBUF 7
106 #define CTLS_SPRINTFBUF 8
107 #define CTLS_SWQ_ERRBUF 9
108 #define CTLS_CPLSPRINTF 10
109 #define CTLS_RESPONSIBLEPID 11
110 #define CTLS_VERSIONINFO 12
111 #define CTLS_VERSIONINFO_LICENCE 13
112 #define CTLS_CONFIGOPTIONS 14
113 #define CTLS_FINDFILE 15
118 void CPL_DLL * CPLGetTLS(
int nIndex );
119 void CPL_DLL CPLSetTLS(
int nIndex,
void *pData,
int bFreeOnExit );
123 typedef void (*CPLTLSFreeFunc)(
void* pData );
124 void CPL_DLL CPLSetTLSWithFreeFunc(
int nIndex,
void *pData, CPLTLSFreeFunc pfnFree );
126 void CPL_DLL CPLCleanupTLS();