マルチスレッドについて
私はいまマルチスレッドの勉強をしているのですが、ビルドが通るのに実行結果がおかしい状況に陥っています。
ロード画面の処理なのですが、プライマリスレッドでロード画面を描画し、セカンダリスレッドでロード処理を行おうとしています。
問題は、ロードが途中で止まることとロード画面を描画できません。
多分下記の関数が悪いとは思うのですがどうか、ご助力おねがいします。
HRESULT GameMain::LoadScreen()
{
// スレッドの生成
static bool onlyonce_createthread = FALSE;
if(onlyonce_createthread ==FALSE)
{
hTh = (HANDLE)_beginthreadex(
NULL,
0,
&loadthread,
this,
0,
(unsigned*)&thID );
onlyonce_createthread =TRUE;
}
// ローディング画面の描画
static bool loopflg = TRUE;
while(loopflg)
{
int threadCondition = CheckThread( hTh );
switch(threadCondition)
{
case THREAD_RUNNING:
if(graphloaded_flg ==TRUE)
{
EnterCriticalSection( &m_criticalSection );
float keep_item = (float)(load_item/MAX_LOAD_ITEM);
LeaveCriticalSection( &m_criticalSection );
d2d_control->GaugeDraw(0, 0, keep_item);
}
break;
case THREAD_EXIT:
loopflg =FALSE;
break;
case THREAD_ERROR:
return E_FAIL;
break;
}
}
float keep_item = (float)(load_item/MAX_LOAD_ITEM);
d2d_control->GaugeDraw(0, 0, keep_item);
return S_OK;
}
お礼
ありがとうございました。 VC++は使い始めたばかりなので???ばっかりです。 勉強しなきゃ。