You question is very broad. It'll take too long to explain you everything, but here some guidance.
You are looking for ways to do multithreading. In C++ you have several ways to launch parallel operations via the standard library:
thread that you can manage on your own,
- and
future, which are in fact objects that collect results from:
async, an asynchronous function call (often implemented internally via a thread pool)
packaged_task
In addition, you can launch parallel operations by using OpenMP if your compiler supports it (mainstream compilers do).
But as soon as you have several threads, you have to manage the synchronization between them, to ensure the processing remains "safe" (e.g. that one thread is not making a mess of a datastructure that is currently updated by another thread and therefore temporarily in an unstable state). Again C++ offers plenty of choices:
atomic variables that can be accessed from several threads without fear of data races
condition_variable which allow for a notification mechanism
mutex with their lock
You certainly can find some online tutorials on these topics. But I'd recommend you warmly Antony William's excellent book "C++ Concurrency in action: practical multithreading". It provides a step by step introduction to multithreading and its challenges, presents different techniques that you can use (such as locking with mutexes and lock_guard, or lock-free data structures) with plenty of well explained examples.