42#include <TargConfig.h>
89BA_API
void ThreadReleaseLock_internalConstructor(
99#if defined(__cplusplus)
181#define ThreadMutexBase ThreadMutex
182#define ThreadSemaphoreBase ThreadSemaphore
183#define ThreadBase Thread
187#include "ThreadLibArch.h"
189#if defined(__cplusplus)
198 void operator delete(
void* d) {
if(d)
::baFree(d); }
199 void *
operator new(size_t,
void *place) {
return place; }
200 void operator delete(
void*,
void *) { }
210 void set() { ThreadMutex_set(
this); }
218 bool isOwner() {
return ThreadMutex_isOwner(
this)?
true:
false; }
230 void operator delete(
void* d) {
if(d)
::baFree(d); }
231 void *
operator new(size_t,
void *place) {
return place; }
232 void operator delete(
void*,
void *) { }
246 void wait() { ThreadSemaphore_wait(
this); }
252 void signal() { ThreadSemaphore_signal(
this); }
265 void operator delete(
void* d) {
if(d)
::baFree(d); }
266 void *
operator new(size_t,
void *place) {
return place; }
267 void operator delete(
void*,
void *) { }
281 Thread_constructor(
this, r, priority, stackSize); }
289 void start() { Thread_start(
this); }
296 static void sleep(
unsigned int milliseconds) {
297 Thread_sleep(milliseconds); }
305 ThreadReleaseLock_internalConstructor(
this, req);
308 mutex(&m) { mutex->
release(); }
312 mutex(tl.mutex) { mutex->
release(); }
314 mutex(tl->mutex) { mutex->
release(); }
void * baMalloc(size_t size)
Allocate uninitialized storage using the target's configured allocator.
void baFree(void *p)
Release storage using the target's configured allocator.
ThreadLock(ThreadMutex &m)
Acquire the mutex until scope exit.
Definition: ThreadLib.h:300
~ThreadLock()
Unlock the mutex.
Definition: ThreadLib.h:302
ThreadPriority
Portable priority choices, mapped to the target operating system.
Definition: ThreadLib.h:61
~ThreadReleaseLock()
Reacquire the same mutex before leaving scope.
Definition: ThreadLib.h:315
void(* Thread_Run)(struct Thread *th)
Entry point invoked in the new thread after Thread::start.
Definition: ThreadLib.h:81
ThreadReleaseLock(struct HttpRequest *req)
Temporarily release the owned mutex; reacquire at scope exit.
Definition: ThreadLib.h:304
The HttpServer creates an HttpRequest object when the HttpServer parses a client request.
Definition: HttpServer.h:950
This class provides an easy and less error-prone way of locking and releasing a mutex.
Definition: ThreadLib.h:124
A mutual exclusion class.
Definition: ThreadLib.h:196
void release()
Release a mutex owned by this thread (C: ThreadMutex_release).
Definition: ThreadLib.h:213
ThreadMutex()
Initialize target mutex resources (C: ThreadMutex_constructor).
Definition: ThreadLib.h:204
~ThreadMutex()
Release target resources after all owners and waiters have stopped (C: ThreadMutex_destructor).
Definition: ThreadLib.h:207
void set()
Wait until the mutex can be acquired (C: ThreadMutex_set).
Definition: ThreadLib.h:210
bool isOwner()
Definition: ThreadLib.h:218
This class provides an easy and less error-prone way of temporarily releasing a locked mutex.
Definition: ThreadLib.h:157
A simple semaphore implementation.
Definition: ThreadLib.h:228
void wait()
Block until a notification can be consumed (C: ThreadSemaphore_wait).
Definition: ThreadLib.h:246
~ThreadSemaphore(void)
Release target resources only after signalers and waiters have stopped (C: ThreadSemaphore_destructor...
Definition: ThreadLib.h:241
ThreadSemaphore()
Create an initially unsignaled notification object (C: ThreadSemaphore_constructor).
Definition: ThreadLib.h:237
void signal()
Signal a waiter or make a notification available for a later wait (C: ThreadSemaphore_signal).
Definition: ThreadLib.h:252
A simple thread class.
Definition: ThreadLib.h:261
void start()
Release the constructed thread to run its entry point once (C: Thread_start).
Definition: ThreadLib.h:289
~Thread()
Release platform thread resources (C: Thread_destructor).
Definition: ThreadLib.h:285
Thread()
Uninitialized storage; call Thread_constructor before use/destruction.
Definition: ThreadLib.h:263
Thread(Thread_Run r, ThreadPriority priority, int stackSize)
Create a thread.
Definition: ThreadLib.h:280
static void sleep(unsigned int milliseconds)
Delay the calling thread (C: Thread_sleep).
Definition: ThreadLib.h:296