Parfois, je dois utiliser std::threadpour accélérer mon application. Je sais aussi qu'il join()attend la fin d'un fil. C'est facile à comprendre, mais quelle est la différence entre appeler detach()et ne pas l'appeler?
Je pensais que sans detach(), la méthode du thread fonctionnera en utilisant un thread indépendamment.
Ne pas se détacher:
void Someclass::Somefunction() {
//...
std::thread t([ ] {
printf("thread called without detach");
});
//some code here
}
Appel avec détachement:
void Someclass::Somefunction() {
//...
std::thread t([ ] {
printf("thread called with detach");
});
t.detach();
//some code here
}
stdet les boostthreads ont detachet ont joinmodelé de près les threads POSIX.