スレッドについて
スレッドについて勉強中なのですが、簡単なスレッド作り、
スレッドの処理が終わってからメインの処理を行わせたくて
以下のようなプログラムを書いてみました。
そこで、WaitForSingleObjectを使ってスレッドが終了するのを
待ちたいのですが、WaitForSingleObjectではまってしまうようで
sprintfのメッセージ(スレッドが止まってしまっている)が
表示されません。
WRITE関数の処理が終われば、、WaitForSingleObjectで処理が
戻ってくると考えているのですが…。
スレッドについてと、間違いについて教えてもらえないでしょうか?
宜しくお願いします。
main
{
if(!stop)
{
File = CreateFile(...);
g_hThead = CreateThread(NULL,0,WRITE,(LPVOID)NULL,0,NULL);
g_stop = false;
}else
{
g_stop = true;
::WaitForSingleObject(g_hThead, INFINITE);
CloseHandle(File);
CloseHandle(hThead );
}
}
void WRITE()
{
while(!g_stop)
{
WriteFile(...);
}
...処理を行う
sprintf("スレッドを終了します。")
}
お礼
ありがとうございました。 returnできちんと終われました。
補足
すいません。かなり説明不足でしたね。 スレッドの中に無限ループがあってメイン側が終わらないと、スレッドが終わらないように、現状ではなっているのです。 ちなみにCreateThreadでスレッドを作成しています。