스레드 3개가 동작하는 프로그램인데 ( 메인 스레드 1개 + 워커 스레드 A + 워커 스레드 B )
A 스레드 하고 B 스레드 가 메인 스레드에 존재하는 CString 객체 하나를 가지고 문자열을 수정해, ( 동기화 없이 )
그리고는 종종 메인 스레드에서 SetWindowText 함수로 CString 이 가진 문자열로 캡션 이름 바꾸는데.. 이거 문제가 생길까..??
문제가 이해가되..??
unsigned int A_thread_func()
{
while( 1 )
main->string.Format( _T("A Thread") );
}
unsigned int B_thread_func()
{
while( 1 )
main->string.Format( _T("B Thread") );
}
void main_thread_timer() // 메인 스레드의 OnTimer 함수( 주기적으로 호출됨 )
{
SetWindowText( string );
}
대략 위 같은 구조인데..
내가 생각 할때 main_thread_timer함수 에서 SetWindowText를 호출할때 넘겨진 CString의 문자열 주소가 처리 되는 동안, A 와 B 스레드 함수에서
다시 힙을 free 하고 재할당 하는 과정에서 문제가 생길꺼 같은데... 너들은 어떻게 생각해..?
다른 쓰레드에서 Main 쓰레드 UI를 변경하면 에러 뱉을텐데? 돌려봄?