Извините, я не могу дать вам лучший ответ прямо сейчас, но, похоже, ваш вопрос не о структуре вашей программы, а скорее об инструменте, который вы должны использовать для реализации многопоточности. Для этого я бы порекомендовал Qt . Некоторое время я использовал Qt, но сейчас только начинаю многопоточность.
Мне кажется, что ваша лучшая ставка может быть QReadWriteLock . Это позволяет вам читать с изображения, но поток чтения снимет свою блокировку, когда появится поток записи. В этом случае вы можете сохранить копию изображения, которое вы в последний раз отображали, и отображать ее, если изображение заблокировано для записи.
Еще раз извините, что я не могу быть более подробным, но, как я уже сказал, я тоже вхожу в это. Я в основном пытаюсь сделать то же, что и вы, но не так быстро :). Удачи!