Ejemplo n.º 1
0
// Create the thread of gogo.dll
static int CreateMPGEthread(void)
{
	// gogo 用のスレッドが終了しているか確認する。
	gogo_buffer_termination  = 1;
	while(!IsTerminatedMPGEthread()){
#ifndef __W32__
		usleep(100);
#else
		Sleep(0);
		Sleep(100);
#endif
	}
	gogo_buffer_termination  = 0;

	// gogo 用のスレッドを作成する。
#ifndef __W32__

#else
	// ハンドルはクローズしておく。
	if(hMPGEthread!=NULL){
		CloseHandle(hMPGEthread);
	}
	hMPGEthread = (HANDLE)crt_beginthreadex(NULL,0,(LPTHREAD_START_ROUTINE)MPGEthread,NULL,0,&dwMPGEthreadID);
	if(hMPGEthread==(HANDLE)-1 || hMPGEthread==NULL){
		hMPGEthread = NULL;
		ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "gogo_a : cannot create thread.");
		return -1;
	}
#endif
	return 0;
}
Ejemplo n.º 2
0
int w32gStartMailslotThread(void)
{
	DWORD dwThreadID;
	HANDLE hThread;
	hThread = (HANDLE)crt_beginthreadex(NULL,0,(LPTHREAD_START_ROUTINE)w32gMailslotThread,NULL,0,&dwThreadID);
	if((unsigned long)hThread==-1){
		return FALSE;	// Error!
	}
	return TRUE;
}