Sto sviluppando un'applicazione C ++ 14 e vorrei sfruttare le nuove funzionalità di multithreading, in particolare std::async
. Ho visto un numero di applicazioni che consentono all'utente di specificare il numero massimo di thread software che possono essere utilizzati per la durata dell'esecuzione del programma. Tuttavia, l'utilizzo consigliato di std::async
è il criterio di avvio predefinito, che non implica alcun controllo sul numero di thread software effettivamente creati.
Suppongo che l'idea di limiti espliciti del thread sia di provare a controllare il numero di core utilizzati dal programma, ma ritengo che ciò sia fuorviante in quanto il numero di core utilizzati verrà determinato dal sistema operativo. C'è qualche buona ragione per consentire all'utente del programma di limitare esplicitamente il numero di thread software creati da un programma, o è sempre preferibile lasciare che l'implementazione e il sistema operativo gestiscano il threading?
Piuttosto che consentire all'utente di specificare un limite di thread, la mia soluzione era di avere solo un flag per consentire l'abilitazione del threading, questo tipo di controllo utente offre anche qualche vantaggio?