I only have one additional thread. I have two queues :
Processing Queue
Rendering Queue
When I need to update a section of mesh, I add a job to the processing queue. I check this queue on tick (game thread) and if there’s a job, I spawn a thread to process the data.
When the thread finishes, it puts a job into the render queue.
I check the render queue on tick (game thread), and if there’s a job, I call UpdateMeshSection with the data set.