// 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; }
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; }