Parfois, je dois utiliser std::thread
pour 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
}
std
et les boost
threads ont detach
et ont join
modelé de près les threads POSIX.