В настоящее время я создаю случайную игру с рельефом местности, где ландшафт создается автоматически вокруг игрока. Я испытываю отставание, когда сгенерированный процесс активен, так как я выполняю довольно тяжелые задачи с последующей обработкой и созданием физических тел.
Затем я вспомнил, используя параллельную асинхронную задачу, чтобы выполнить пост-обработку для меня. Но я понятия не имею, как я это сделаю. Я искал C++ std::async
но я считаю, что это не то, что я хочу. В приведенных примерах задача вернула что-то. Я хочу, чтобы задача изменила объекты в основной программе.
Это то, что я хочу:
// Main program
// Chunks that needs to be processed.
// NOTE! These chunks are already generated, but need post-processing only!
std::vector<Chunk*> unprocessedChunks;
И тогда моя задача могла выглядеть примерно так: работает как цикл, постоянно проверяя, есть ли куски для обработки.
// Asynced task
if(unprocessedChunks.size() > 0)
{
processChunk(unprocessedChunks.pop());
}
Я знаю, что это не так просто, как я написал, но это было бы огромной помощью для меня, если бы вы могли подтолкнуть меня в правильном направлении.
В Java я мог бы напечатать что-то вроде этого:
asynced_task = startAsyncTask(new PostProcessTask());
И эта задача будет выполняться до тех пор, пока я не сделаю это:
asynced_task.cancel();
Похоже, вы хотите использовать шаблон производителя-потребителя, используя потоки, для выполнения последующей обработки.