benthread.cpp

来自「GPU实现的MapReduce framework,对于学习并行编程和cuda平」· C++ 代码 · 共 66 行

CPP
66
字号
/*
 *System-independent library.
 *Written by Wenbin FANG (wenbin@cse.ust.hk)
 *
 *COMPILE MACROS:
 *1, __UNIX__ or __WIN32__
 *2, __TIMER__
 *3, __DEBUG__
 *4, __CUDA__
 */
#include "BenLib.h"

#ifdef __UNIX__
BenThread_t BenNewThread(void *(*start_routine)(void*),  void *arg)
{
	BenThread_t threadId = -1;
	int rc = -1;

	rc = pthread_create(&threadId, NULL, start_routine, (BenVoid *)arg);

	if (rc != 0) return -1;

	return threadId;
}

void BenExitThread(void *status)
{
	pthread_exit(status);
}

void BenWaitForSingle(BenThread_t id)
{
	pthread_join(id, NULL);
}

void BenWaitForMul(BenThread_t* ids, int num)
{
	int i;
	for (i = 0; i < num; i++)
	{
		pthread_join(ids[i], NULL);
	}		
}
#else //__UNIX__
BenThread_t BenNewThread(void *(*start_routine)(void*),  void *arg)
{
	BenThread_t thread = CreateThread(NULL, 0, 
		(LPTHREAD_START_ROUTINE)start_routine, arg, 0, NULL);
	return thread;
}

void BenExitThread(void *status)
{
	ExitThread(0);
}

void BenWaitForSingle(BenThread_t id)
{
	WaitForSingleObject(id, INFINITE);
}

void BenWaitForMul(BenThread_t* ids, int num)
{
	WaitForMultipleObjects(num, ids, TRUE, INFINITE);
}
#endif //__WIN32__

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?