32#include "foundation/PxUserAllocated.h"
38#define PxSpinLockPause() __asm pause
39#elif PX_LINUX || PX_APPLE_FAMILY || PX_SWITCH
40#define PxSpinLockPause() asm("nop")
42#error "Platform not supported!"
59 eFORCE_DWORD = 0xffFFffFF
68 virtual void execute() {}
75 typedef void* (*ExecuteFn)(
void*);
77 static PxU32 getDefaultStackSize();
136 bool quitIsSignalled();
160 PxU32 setAffinityMask(PxU32 mask);
168 void setName(
const char* name);
171 static void sleep(PxU32 ms);
178 static void yieldProcessor();
181 static PxU32 getNbPhysicalCores();
186 static PxU32 getSize();
192template <
typename Alloc = PxReflectionAllocator<PxThreadImpl> >
196 typedef PxThreadImpl::Id Id;
211 PxThreadT(PxThreadImpl::ExecuteFn fn,
void* arg,
const char* name,
const Alloc& alloc = Alloc()) : Alloc(alloc)
224 Alloc::deallocate(mImpl);
231 void start(PxU32 stackSize = PxThreadImpl::getDefaultStackSize())
233 mImpl->
start(stackSize,
this);
294 PxU32 setAffinityMask(PxU32 mask)
301 return PxThreadImpl::getPriority(threadId);
335 static PxU32 getDefaultStackSize()
337 return PxThreadImpl::getDefaultStackSize();
340 static PxThreadImpl::Id getId()
342 return PxThreadImpl::getId();
345 static PxU32 getNbPhysicalCores()
351 class PxThreadImpl* mImpl;
354typedef PxThreadT<> PxThread;
356PX_FOUNDATION_API PxU32 PxTlsAlloc();
357PX_FOUNDATION_API
void PxTlsFree(PxU32 index);
358PX_FOUNDATION_API
void* PxTlsGet(PxU32 index);
359PX_FOUNDATION_API
size_t PxTlsGetValue(PxU32 index);
360PX_FOUNDATION_API PxU32 PxTlsSet(PxU32 index,
void* value);
361PX_FOUNDATION_API PxU32 PxTlsSetValue(PxU32 index,
size_t value);
void setName(const char *name)
Definition FdUnixThread.cpp:310
PxU32 setAffinityMask(PxU32 mask)
Definition FdUnixThread.cpp:282
void start(PxU32 stackSize, PxRunnable *r)
Definition FdUnixThread.cpp:170
void signalQuit()
Definition FdUnixThread.cpp:218
void quit()
Definition FdUnixThread.cpp:242
static void yield()
Definition FdUnixThread.cpp:268
~PxThreadImpl()
Definition FdUnixThread.cpp:164
bool quitIsSignalled()
Definition FdUnixThread.cpp:234
static PxU32 getNbPhysicalCores()
Definition FdUnixThread.cpp:391
bool waitForQuit()
Definition FdUnixThread.cpp:223
void setPriority(PxThreadPriority::Enum prio)
Definition FdUnixThread.cpp:363
void kill()
Definition FdUnixThread.cpp:248
static PxU32 getSize()
Definition FdUnixThread.cpp:126
static void yieldProcessor()
Definition FdUnixThread.cpp:273
static void sleep(PxU32 ms)
Definition FdUnixThread.cpp:257
Definition PxThread.h:194
void start(PxU32 stackSize=PxThreadImpl::getDefaultStackSize())
Definition PxThread.h:231
PxThreadT(const Alloc &alloc=Alloc())
Definition PxThread.h:202
static void yield()
Definition PxThread.h:323
void setName(const char *name)
Definition PxThread.h:311
void signalQuit()
Definition PxThread.h:261
bool quitIsSignalled()
Definition PxThread.h:281
virtual ~PxThreadT()
Definition PxThread.h:221
PxThreadT(PxThreadImpl::ExecuteFn fn, void *arg, const char *name, const Alloc &alloc=Alloc())
Definition PxThread.h:211
void setPriority(PxThreadPriority::Enum prio)
Definition PxThread.h:305
bool waitForQuit()
Definition PxThread.h:271
virtual void execute(void)
Definition PxThread.h:252
void kill()
Definition PxThread.h:242
static void yieldProcesor()
Definition PxThread.h:330
static void sleep(PxU32 ms)
Definition PxThread.h:317
void quit()
Definition PxThread.h:289
Definition PxUserAllocated.h:43
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Enum
Definition PxThread.h:53
@ eNORMAL
Normal/default priority.
Definition PxThread.h:56
@ eLOW
Low priority.
Definition PxThread.h:58
@ eABOVE_NORMAL
Above Normal priority.
Definition PxThread.h:55
@ eBELOW_NORMAL
Below Normal priority.
Definition PxThread.h:57
@ eHIGH
High priority.
Definition PxThread.h:54