You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.3 KiB
61 lines
1.3 KiB
2 years ago
|
/*
|
||
|
* Copyright 1993-2013 NVIDIA Corporation. All rights reserved.
|
||
|
*
|
||
|
* Please refer to the NVIDIA end user license agreement (EULA) associated
|
||
|
* with this source code for terms and conditions that govern your use of
|
||
|
* this software. Any use, reproduction, disclosure, or distribution of
|
||
|
* this software and related documentation outside the terms of the EULA
|
||
|
* is strictly prohibited.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef MULTITHREADING_H
|
||
|
#define MULTITHREADING_H
|
||
|
|
||
|
|
||
|
//Simple portable thread library.
|
||
|
|
||
|
//Windows threads.
|
||
|
#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
|
||
|
#include <windows.h>
|
||
|
|
||
|
typedef HANDLE CUTThread;
|
||
|
typedef unsigned(WINAPI *CUT_THREADROUTINE)(void *);
|
||
|
|
||
|
#define CUT_THREADPROC unsigned WINAPI
|
||
|
#define CUT_THREADEND return 0
|
||
|
|
||
|
#else
|
||
|
//POSIX threads.
|
||
|
#include <pthread.h>
|
||
|
|
||
|
typedef pthread_t CUTThread;
|
||
|
typedef void *(*CUT_THREADROUTINE)(void *);
|
||
|
|
||
|
#define CUT_THREADPROC void
|
||
|
#define CUT_THREADEND
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
//Create thread.
|
||
|
CUTThread cutStartThread(CUT_THREADROUTINE, void *data);
|
||
|
|
||
|
//Wait for thread to finish.
|
||
|
void cutEndThread(CUTThread thread);
|
||
|
|
||
|
//Destroy thread.
|
||
|
void cutDestroyThread(CUTThread thread);
|
||
|
|
||
|
//Wait for multiple threads.
|
||
|
void cutWaitForThreads(const CUTThread *threads, int num);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} //extern "C"
|
||
|
#endif
|
||
|
|
||
|
#endif //MULTITHREADING_H
|