Comment mettre fin ou l'arrêt d'un thread détaché en c++?

Je suis intéressé par la résiliation de/à l'arrêt et la mise à mort d'une rupture du thread en c++. Comment cela peut-il être fait?

void myThread()
{
    int loop = 0;
    while(true)
    {
        std::this_thread::sleep_for(std::chrono::seconds(5));
        ++loop;
    }
}

void testThread()
{
    std::thread globalThread(myThread);
    globalThread.detach();
}

int main(void)
{
    testThread();
    for(unsigned int i=0; i < 1000; i++)
    {
        cout << "i = " << i << endl;
    }
    return 0;
}

La raison pour laquelle je voudrais "stop"/"mettre fin" à la globalThread() c'est parce que valgrind listes que c'est un "peut-être" perdu "" type de fuite de mémoire (152 octets). Quelle est la meilleure façon de traiter ce problème?

  • Connexes/dupliquer: stackoverflow.com/q/12207684
  • merci
  • Pour réitérer ce qui est dit sur cette question et d'ailleurs, ce que vous faites maintenant, et même ce que vous semblez vouloir faire, c'est dangereux. Le thread principal de retourner tue globalThread dans un non-gracieux de la mode, et la seule "bonne" façon de faire les choses est d'avoir le thread principal envoyez une demande via mutex, etc., pour briser la boucle, et ont le thread principal join attendre un arrêt progressif de la reconnaissance.
  • Check this out - [MA SOLUTION][1] . J'ai répondu à la même question . [1]: stackoverflow.com/a/32338982/5163650
  • Essayez TerminateThread() si c'est Windows. On dirait qu'il pourrait être Windows basé sur les appels de fonction.
InformationsquelleAutor codeshark | 2014-09-04