C++ Parallel Asynchonous task
- by Doodlemeat
I am currently building a randomly generated terrain game where terrain is created automatically around the player. I am experiencing lag when the generated process is active, as I am running quite heavy tasks with post-processing and creating physics bodies.
Then I came to mind using a parallel asynchronous task to do the post-processing for me. But I have no idea how I am going to do that. I have searched for C++ std::async but I believe that is not what I want. In the examples I found, a task returned something. I want the task to change objects in the main program.
This is what I want:
// Main program
// Chunks that needs to be processed.
// NOTE! These chunks are already generated, but need post-processing only!
std::vector<Chunk*> unprocessedChunks;
And then my task could look something like this, running like a loop constantly checking if there is chunks to process.
// Asynced task
if(unprocessedChunks.size() > 0)
{
processChunk(unprocessedChunks.pop());
}
I know it's not far from easy as I wrote it, but it would be a huge help for me if you could push me at the right direction.
In Java, I could type something like this:
asynced_task = startAsyncTask(new PostProcessTask());
And that task would run until I do this:
asynced_task.cancel();