69 lines
3.0 KiB
C
69 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-2020 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(void* 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
|