1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*****************************************************************************
- * HpThread.h
- *****************************************************************************
- *
- * Project: Halcon/libhalcon
- * Description: implements a programming interface to Posix or DCE
- * thread-packages for different operating systems.
- *
- * (c) 1996-2022 by MVTec Software GmbH
- * www.mvtec.com
- *
- *****************************************************************************/
- #ifndef HPTHREAD_H
- #define HPTHREAD_H
- #if defined(__cplusplus)
- extern "C" {
- #endif
- #include "HBase.h"
- #include "HDeclSpec.h"
- /*===========================================================================*/
- /* Prototypes of Functions */
- /*===========================================================================*/
- /* --- Thread Synchronization --------------- */
- /* type of dynamically set synchronisation functions */
- typedef Herror (*H_THREAD_MUTEX_FCT)(H_pthread_mutex_t* hmutex);
- typedef bool (*H_THREAD_MUTEX_BFCT)(H_pthread_mutex_t* hmutex);
- /* general mutex */
- extern HLibExport Herror HpThreadMutexInit(H_pthread_mutex_t* hmutex);
- /* dynamically set synchronisation functions */
- extern HLibExport H_THREAD_MUTEX_FCT HpThreadMutexLock;
- extern HLibExport H_THREAD_MUTEX_FCT HpThreadMutexUnlock;
- extern HLibExport H_THREAD_MUTEX_BFCT HpThreadMutexTrylock;
- extern HLibExport Herror HpThreadMutexDestroy(H_pthread_mutex_t* hmutex);
- /* --- Threads -------------------------------*/
- /* HpThreadHandleAlloc - allocate pthread handle (identifier of pthread) */
- extern HLibExport Herror HpThreadHandleAlloc(H_pthread_t* handle);
- /* HpThreadHandleFree - give pthread handle (identifier of pthread) free */
- extern HLibExport Herror HpThreadHandleFree(H_pthread_t handle);
- /* HpThreadCreate - create pthread object and start pthread asynchronously */
- extern HLibExport Herror HpThreadCreate(H_pthread_t handle, void** parameters,
- Herror (*function)(void**));
- /* HpThreadClear - frees resources allocated by HpThreadCreate */
- extern HLibExport Herror HpThreadClear(H_pthread_t handle);
- /* HpThreadSelf - get calling thread's identifier (UNIX) or handle (Windows) */
- extern HLibExport Herror HpThreadSelf(H_pthread_t* my_handle);
- /* HpThreadSelfId - get calling thread's identifier */
- extern HLibExport Herror HpThreadSelfId(void* thread_id);
- /* HpThreadEqualToSelf - compare a thread identifier to current thread */
- extern HLibExport Herror HpThreadEqualToSelf(H_pthread_t t_handle,
- int* result_val);
- /* HpThreadJoin - wait for termination of specified pthread */
- extern HLibExport Herror HpThreadJoin(H_pthread_t handle);
- /* HpThreadDetach - detach pthread, mark the pthread object for deletion */
- extern HLibExport Herror HpThreadDetach(H_pthread_t handle);
- #if defined(__cplusplus)
- }
- #endif
- #endif
|