상황은 이렇습니다. MFC 프로그램을 만들고 있는데 스레드가 하나 돌고 있습니다.
MFC 화면에 그래픽 작업을 하는데 이는 버튼 이벤트나 메뉴의 이벤트로 그리기도 하고, 스레드에서 메시지를 메인 핸들로 보내 콜백함수에서 그리기도 합니다.
이때 다음과 같은 일이 일어났다고 가정해보겠습니다.
버튼 이벤트가 일어나서 버튼이벤트와 연결된 함수가 호출될 때와, 스레드에서 메시지를 받아 콜백함수가 호출되어야 할때가 동시에 발생한 경우
어떻게 처리 되나요??
별개의 스레드를 하나 이상 추가했는데, 그 별개 스레드와 메인스레드가 같은 변수를 조작하는 상황이 벌어질 수 있다면 문제가 생길 가능성이 높습니다.
따로 처리를 해주지 않는다면 예측불능의 난장판이 되죠. 그냥 스레드 순서 먼저 돌아오는대로 처리되고, 스레드 진행하다 스위칭 일어나고 뭐 그렇습니다.
만약 쓰레드간 같은 영역을 조작하는 상황이 일어날 거 같고, 거기에 대응하시려면 CriticalSection, Mutex, Semaphore 쪽을 살펴보시면 됩니다.
MFC 로 만든 프로그램에, 따로 쓰레드를 생성하지 않은 케이스라면 아마 괜찮을겁니다. 알아서 다 처리를 해놨겠죠.
그리고 MFC로 짠거에 따로 쓰레드를 생성하셨다면 거기에 대해서 상호배제 처리를 하셔야 할겁니다.