Why must it be queued? Can't you just have another, local, queue, to which you'll add the blocks to remove? Or another local queue where you'll place all blocks that should stay, and do a `std::swap()` in the end between this local queue and the chunk data queue.