17#if BT_THREADSAFE && !defined(_WIN32)
30#define _XOPEN_SOURCE 600
42#if __cplusplus >= 201103L
70 ThreadFunc m_userThreadFunc;
84 typedef unsigned long long UINT64;
112#define checkPThreadFunction(returnValue) \
113 if (0 != returnValue) \
115 printf("PThread problem at line %i in file %s: %i %d\n", __LINE__, __FILE__, returnValue, errno); \
128btThreadSupportPosix::~btThreadSupportPosix()
135#if (defined(__APPLE__))
136#define NAMED_SEMAPHORES
142#ifdef NAMED_SEMAPHORES
167#ifdef NAMED_SEMAPHORES
177 btThreadSupportPosix::btThreadStatus* status = (btThreadSupportPosix::btThreadStatus*)
argument;
182 void*
userPtr = status->m_userPtr;
187 status->m_userThreadFunc(
userPtr);
188 status->m_cs->lock();
189 status->m_status = 2;
190 status->m_cs->unlock();
192 status->threadUsed++;
197 status->m_cs->lock();
198 status->m_status = 3;
199 status->m_cs->unlock();
226int btThreadSupportPosix::waitForResponse()
262void btThreadSupportPosix::waitForAllTasks()
297void btThreadSupportPosix::stopThreads()
332 virtual void unlock()
const T & btMax(const T &a, const T &b)
const T & btMin(const T &a, const T &b)
const unsigned int BT_MAX_THREAD_COUNT
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
virtual int getCacheFriendlyNumThreads() const =0
virtual int getLogicalToPhysicalCoreRatio() const =0
virtual void waitForAllTasks()=0
static btThreadSupportInterface * create(const ConstructionInfo &info)
virtual void runTask(int threadIndex, void *userData)=0
virtual int getNumWorkerThreads() const =0
virtual void deleteCriticalSection(btCriticalSection *criticalSection)=0
virtual btCriticalSection * createCriticalSection()=0