Win32API(CRT) スレッドを起動する _beginthreadex

  • _beginthreadexでスレッドを起動する。引数はCreateThreadとほぼ同じ。違いは、スレッドIDやスレッド関数のプロトタイプなどの型。

  • また、スレッド関数内でCランタイムを使用する場合は、CreateThread() ではなく_beginthreadex() を使うようにする。

  • 使用するAPI

  • _beginthreadex

  • WaitForSingleObject

  • CloseHandle
  • #include <windows.h>
    #include <process.h>
    
    unsigned int WINAPI ThreadFunc(LPVOID arg)
    {
    	int i;
    	for (i = 0; i < 100; i++) {
    		printf("ThreadFunc %d\n", i);
    		Sleep(50);
    	}
    	return 0;
    }
    
    int main()
    {
    	HANDLE hThread;
    	unsigned int uiThreadId;
    
    	hThread = (HANDLE)_beginthreadex(NULL,
    		0,
    		ThreadFunc,
    		NULL,
    		0,
    		&uiThreadId);
    
    	WaitForSingleObject(hThread, INFINITE);
    
    	CloseHandle(hThread);
    
    	return 0;
    }