2010-04-01 5 views
1

WinApi를 사용하고 있습니다.비 GUI 스레드에서 메인 창으로 메시지 보내기

SendMessage/PostMessage는 메인 윈도우와 통신하는 좋은 스레드 안전 방법입니까? 작업 스레드가 화면에 표시되어야하는 비트 맵을 생성한다고 가정합니다. 작업 스레드는 비트 맵을 할당하고이 비트 맵에 대한 포인터와 함께 메시지를 보내고 GUI 스레드가 처리 할 때까지 기다립니다 (예 : SendMessage 사용). 작업 스레드는 다른 스레드와 데이터를 공유하지 않습니다.

그런 디자인으로 문제가 있습니까?

스레드 동기화, 잠금 등을 도입하지 않는 다른 가능성이 있습니까?

답변

2

이 스레드 동기화의 괜찮은 방법이다, 그래서 당신이 조심있는 한, 잘해야한다 :

  • 중 하나를 메인 스레드가 비트 맵과 작업자 스레드를 유지 새로운 일을 시작하거나, 반대로 SendMessage가 반환 한 후에는 하나의 스레드 만 비트 맵에 액세스 할 수 있습니다.
  • 실수로 SendMessage를 PostMessage로 변경하지 않고 스레드 간 통신은 물론 동기화를 제공하고 있음을 잊어 버리십시오.
관련 문제