2010-04-01 4 views
1

Я использую WinApi.Отправка сообщения из рабочего потока non-gui в главное окно

Is SendMessage/PostMessage - хороший, потокобезопасный способ общения с основным окном? Предположим, рабочий поток создает растровое изображение, которое должно отображаться на экране. Рабочий поток выделяет растровое изображение, отправляет сообщение с указателем на это растровое изображение и ждет, пока процесс потока GUI не обработает его (например, с помощью SendMessage). Рабочий поток не имеет данных с другими потоками.

Я сталкиваюсь с проблемами с такой конструкцией?

Есть ли другие возможности, которые не включают синхронизацию потоков, блокировку и т. Д.?

ответ

2

Это достойный способ синхронизации потоков, и должна быть тонкой, так долго, как вы осторожны, что:

  • либо основной поток сохраняет растровое изображение и рабочий поток начинается новый, или наоборот, так что после отправки SendMessage только один поток имеет доступ к растровому изображению.
  • Вы не случайно меняете SendMessage на PostMessage позже, забывая, что он обеспечивает вашу синхронизацию, а также межпоточную связь.
Смежные вопросы