○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++