На каком языке, платформе и (при необходимости) графическом API вы работаете?
Мне будет достаточно псевдо-алгоритма.
СуществуетРазнообразие подходов в зависимости от ситуации, вы действительно должны быть более конкретными.Например, вы можете объявить критические секции так, чтобы поток 1 ожидал при записи, пока поток 2 читает, и так далее, - но есть причины этого не делать.
Вы можете просто работать с передачей сообщений, чтоРазбудить поток рисунка, а не работать с критическими разделами.Так что это действительно сильно зависит от языка, платформы и графического API.
Вот код, который использует передачу сообщений для синхронизации рендеринга и передачи в графику:
DataAcquisitionThread.Run() {
ProcessData();
Wait(message);
DrawToBackBuffer();
}
DisplayThread.Run() {
Wait(message);
SwapBuffer(message.bufferNumber);
Render(buffer);
SendMessage(message.defaultMessage());
}