aboutsummaryrefslogtreecommitdiff
path: root/doc/Manual/en/BH_Thread.pod
diff options
context:
space:
mode:
Diffstat (limited to 'doc/Manual/en/BH_Thread.pod')
-rw-r--r--doc/Manual/en/BH_Thread.pod289
1 files changed, 289 insertions, 0 deletions
diff --git a/doc/Manual/en/BH_Thread.pod b/doc/Manual/en/BH_Thread.pod
new file mode 100644
index 0000000..0780965
--- /dev/null
+++ b/doc/Manual/en/BH_Thread.pod
@@ -0,0 +1,289 @@
+=encoding UTF-8
+
+
+=head1 NAME
+
+BH_Thread - multithreading and synchronization primitives
+
+
+=head1 SYNTAX
+
+ #include <BH/Thread.h>
+
+ cc prog.c -o prog -lbh
+
+
+=head1 DESCRIPTION
+
+The BH_Thread library provides a set of functions for working with
+multithreading and thread synchronization. It includes functions for creating
+and managing threads, working with mutexes, semaphores, condition variables, and
+spinlocks.
+
+
+=head1 API CALLS
+
+
+=head2 BH_ThreadNew
+
+ BH_Thread *BH_ThreadNew(size_t stack,
+ BH_ThreadCallback callback,
+ void *data);
+
+Creates a thread with a specified stack size I<stack>, execution function
+I<callback>, and data I<data>.
+
+Returns a pointer to the thread object on success, otherwise NULL.
+
+
+=head2 BH_ThreadJoin
+
+ int BH_ThreadJoin(BH_Thread *thread);
+
+Blocks the execution of the current thread until another thread completes.
+
+Upon completion of the thread, the resources of the I<thread> are freed.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_ThreadDetach
+
+ int BH_ThreadDetach(BH_Thread *thread);
+
+Detaches the thread from the current process.
+
+Upon completion of the thread, the resources of the I<thread> are freed.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_MutexNew
+
+ BH_Mutex *BH_MutexNew(void);
+
+Creates a mutex.
+
+Returns a pointer to the mutex object on success, otherwise NULL.
+
+
+=head2 BH_MutexFree
+
+ void BH_MutexFree(BH_Mutex *mutex);
+
+Destroys the mutex.
+
+If the mutex is locked, the behavior is undefined.
+
+
+=head2 BH_MutexLock
+
+ int BH_MutexLock(BH_Mutex *mutex);
+
+Locks the mutex.
+
+If the mutex is already locked, the behavior is undefined.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_MutexUnlock
+
+ int BH_MutexUnlock(BH_Mutex *mutex);
+
+Unlocks the mutex.
+
+If the mutex is locked by another thread, the behavior is undefined.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_MutexLockTry
+
+ int BH_MutexLockTry(BH_Mutex *mutex);
+
+Attempts to lock the mutex.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_SemaphoreNew
+
+ BH_Semaphore *BH_SemaphoreNew(int value);
+
+Creates a semaphore with a specified initial value I<value>.
+
+Returns a pointer to the semaphore object on success, otherwise NULL.
+
+
+=head2 BH_SemaphoreFree
+
+ void BH_SemaphoreFree(BH_Semaphore *semaphore);
+
+Destroys the semaphore.
+
+
+=head2 BH_SemaphorePost
+
+ int BH_SemaphorePost(BH_Semaphore *semaphore);
+
+Increases the semaphore value by 1.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_SemaphoreWait
+
+ int BH_SemaphoreWait(BH_Semaphore *semaphore);
+
+Decreases the semaphore value by 1.
+
+If the semaphore value is 0, blocks the execution of the current thread until
+the semaphore value becomes greater than 0.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_SemaphoreWaitTry
+
+ int BH_SemaphoreWaitTry(BH_Semaphore *semaphore);
+
+Attempts to decrease the semaphore value by 1.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_SemaphoreWaitFor
+
+ int BH_SemaphoreWaitFor(BH_Semaphore *semaphore,
+ uint32_t timeout);
+
+Attempts to decrease the semaphore value by 1 within a specified time
+I<timeout>.
+
+The I<timeout> parameter specifies the waiting time in milliseconds.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_ConditionNew
+
+ BH_Condition *BH_ConditionNew(void);
+
+Creates a new condition variable.
+
+Returns a pointer to the condition variable object on success, otherwise NULL.
+
+
+=head2 BH_ConditionFree
+
+ void BH_ConditionFree(BH_Condition *condition);
+
+Destroys the condition variable.
+
+If the condition variable is used by other threads, the behavior is undefined.
+
+
+=head2 BH_ConditionWait
+
+ int BH_ConditionWait(BH_Condition *condition,
+ BH_Mutex *mutex);
+
+Blocks the execution of the current thread until another thread signals
+a change in the condition.
+
+In some situations, the signal of a condition change may be false.
+
+The I<mutex> parameter specifies the mutex used in conjunction with the
+condition variable.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_ConditionWaitFor
+
+ int BH_ConditionWaitFor(BH_Condition *condition,
+ BH_Mutex *mutex,
+ uint32_t timeout);
+
+Attempts to block the execution of the current thread until another thread
+signals a change in the condition within a specified time I<timeout>.
+
+In some situations, the signal of a condition change may be false.
+
+The I<mutex> parameter specifies the mutex used in conjunction with the
+condition variable.
+
+The I<timeout> parameter specifies the waiting time in milliseconds.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_ConditionSignal
+
+ int BH_ConditionSignal(BH_Condition *condition);
+
+Signals one waiting thread about a change in the condition.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_ConditionBroadcast
+
+ int BH_ConditionBroadcast(BH_Condition *condition);
+
+Signals all waiting threads about a change in the condition.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_SpinlockLock
+
+ void BH_SpinlockLock(int *lock);
+
+Locks the spinlock.
+
+
+=head2 BH_SpinlockLockTry
+
+ int BH_SpinlockLockTry(int *lock);
+
+Attempts to lock the spinlock.
+
+Returns 0 on success, otherwise an error code.
+
+
+=head2 BH_SpinlockUnlock
+
+ void BH_SpinlockUnlock(int *lock);
+
+Unlocks the spinlock.
+
+
+=head2 BH_TssCreate
+
+ int BH_TssCreate(BH_GenericCallback callback);
+
+Creates a new TSS/TLS index with a cleanup function I<callback>.
+
+Returns the TSS/TLS index on success, otherwise an error code.
+
+
+=head2 BH_TssRead
+
+ void *BH_TssRead(int index);
+
+Reads data from the TSS/TLS slot.
+
+
+=head2 BH_TssWrite
+
+ void BH_TssWrite(int index,
+ void *value);
+
+Writes data I<value> to the TSS/TLS slot.
+
+
+=head1 SEE ALSO
+
+L<BH>