Occhio che (1) std::async non restituisce un thread, ma un std::future, e (2) se vuoi essere sicuro che venga effettivamente eseguito in un thread separato devi specificare il flag std::launch::async, altrimenti il runtime è libero di tenerlo come "deferred" ed eseguirlo effettivamente solo quando vai a chiedere al future che hai ottenuto il risultato dell'operazione (cosa che è il default di g++, per esempio).
In generale, la gestione "a future" nella mia esprienza è una delle opzioni migliori per gestire operazioni parallele, ma è un po' diversa rispetto ai thread "raw", ti consiglio di studiarteli per bene prima di usarli.


:
Rispondi quotando