Files
2025-03-26 01:06:45 +08:00

72 lines
3.0 KiB
C

/*****************************************************************************
* HpThread.h
*****************************************************************************
*
* Projekt: Halcon/libhalcon
* Description: implements a programming interface to Posix or DCE
* thread-packages for different operating systems.
*
* (c) 1996-2018 by MVTec Software GmbH
* www.mvtec.com
*
*****************************************************************************/
#ifndef HPTHREAD_H
# define HPTHREAD_H
# if defined(__cplusplus)
extern "C" {
# endif
/*===========================================================================*/
/* Prototypes of Functions */
/*===========================================================================*/
/* --- Thread Synchronization --------------- */
/* type of dynamically set synchronisation functions */
typedef Herror (*H_THREAD_MUTEX_FCT)(H_pthread_mutex_t *hmutex);
typedef HBOOL (*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(VOIDP thread_id);
/* HpThreadEqualToSelf - compare a thread identifier to current thread */
extern HLibExport Herror HpThreadEqualToSelf(H_pthread_t t_handle,
HINT *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