La tua domanda è molto ampia. Ci vorrà troppo tempo per spiegarti tutto, ma qui alcune indicazioni.
Stai cercando modi per fare il multithreading. In C ++ hai diversi modi per avviare operazioni parallele tramite la libreria standard:
-
thread
che puoi gestire da solo,
- e
future
, che sono in effetti oggetti che raccolgono i risultati da:
-
async
, una chiamata di funzione asincrona (spesso implementata internamente tramite un pool di thread)
-
packaged_task
Inoltre, puoi avviare operazioni parallele utilizzando OpenMP se il compilatore lo supporta (i compilatori mainstream fanno).
Ma non appena si hanno diversi thread, è necessario gestire la sincronizzazione tra di essi, per garantire che l'elaborazione rimanga "sicura" (ad esempio, un thread non sta facendo casino di una infrastruttura che è attualmente aggiornata da un altro thread e quindi temporaneamente in uno stato instabile). Di nuovo C ++ offre molte scelte:
-
atomic
variabili a cui è possibile accedere da più thread senza temere le razze di dati
-
condition_variable
che consente un meccanismo di notifica
-
mutex
con il loro lock
Certamente puoi trovare alcuni tutorial online su questi argomenti. Ma ti raccomando caldamente l'eccellente libro di Antony William " C ++ Concorrenza in azione: pratico multithreading " . Fornisce un'introduzione passo passo al multithreading e alle sue sfide, presenta diverse tecniche che è possibile utilizzare (come il blocco con mutex e lock_guard
, o strutture di dati prive di lock) con molti esempi ben illustrati.