빌더에서 자체 지원하는 TThread 를 사용했을 때는 UI 화면이 정상적으로 반응을 하는데요.
C++ 에서 지원하는 Thread 를 사용해서 코팅을 했더니 thread가 동작하는 동안 UI의 반응이 죽어 있네요..
#include <thread>
//---------------------------------------------------------------------------
void testThread(int Count)
{
for(int loop=0 ; loop<Count ; loop++)
{
Sleep(10) ;
Application->ProcessMessages() ; // 있으나 없으나 동일하게 UI 가 얼어 버림
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
thread t1(testThread, 200) ;
t1.join() ;
}
//---------------------------------------------------------------------------
testThread 가 동작하는 동안 UI가 꼼짝도 안하다가 testThread 동작이 완료 되면 정상으로 돌아 옵니다.
이렇게 UI 가 얼어 버리면 쓰레드 쓸 이유가 없는데 이게 빌더 문제인가요? 아니면 모든 컴파일러들의 공통적인
증상인가요??
C++ 빌더 리오 10.2.2 버젼으로 테스트 하고 있습니다.
|