○DLLにてスレッドの作成



■DLLでのスレッドを作成する時の基本となる部分

▼スレッドにより動作する関数部分

DWORD WINAPI Thread(LPVOID pData){
	return 0;
}

▼上記関数からスレッドを作成する部分

HANDLE hThread;
hThread = CreateThread(NULL, 0, Thread, (LPVOID)NULL, 0, NULL);
CloseHandle(hThread);



■実際の作成

呼び出し元で
//HINSTANCE hDllInstance = ::LoadLibrary("test.dll");//DLLを指定
//を実行すると
//メッセージボックスが11回出ます。
//------------------------------------------------------------



int a=0;//一つの変数を共有し使用することが可能。

DWORD WINAPI Thread1(LPVOID pData){
	for(;a<10;a++){
		MessageBox(NULL, "Thread1", "dll", MB_OK);
	}
	return 0;
}

DWORD WINAPI Thread2(LPVOID pData){
	for(;a<10;a++){
		MessageBox(NULL, "Thread2", "dll", MB_OK);
	}
	return 0;
}


BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch(ul_reason_for_call)
    {
		case DLL_PROCESS_ATTACH:
			CreateThread(NULL, 0, Thread1, (LPVOID)NULL, 0, NULL);//Thread1を開始
			CreateThread(NULL, 0, Thread2, (LPVOID)NULL, 0, NULL);//Thread2を開始
		break;
	}
    return TRUE;
}




▲トップページ > Windows と C++