Just try and batch them as much as possible across the threads, even with a thread pool you probably don’t want to open a new FQueuedWork for each chunk, instead have the first FQueuedWork update 1/4 of them, the next another 1/4, ect ect. Your original implementation appeared to be creating 1000+ threads O.o, you would be losing all of your gains (and more) from multithreading when launching all of them.
Also having the chunks as components not only allows you to have one actor from which you can reference all chunks and perform operations, but also cuts out any of the overhead the engine has that it does extra for an actor over a component. If you do stay with actors for the chunks at the very least you’ll want to disable them ticking, as 1024 actors ticking for no reason should be pretty taxing.