ich immer im Internet sah die Regel:Qestion zu verstehen "lösen()" auf Threads in C++
Wenn Sie nicht lösen \ einen Thread beitreten, wird dann aufgerufen werden, den Vorgang abzubrechen.
Ich brauche einen Grund, warum dieser Abbruch geschieht.
Ich kann mit Join verstehen - denn wenn nicht tun, um zu einem Thread zu verbinden, kann die Main vor dem Thread geschlossen werden und es kann Probleme machen.
Aber loslösen tut nichts! Es hat keinen Zweck (zumindest von dem, was ich gesehen habe, wenn ich einen Thread mit oder ohne losgelöst habe).
Was genau machen den Abbruch zu springen, was genau ist der Zweck der Trennung?
Hier ist ein einfaches Beispiel für das, was verursacht „Abbruch“:
#include <iostream> // std::cout
#include <thread> // std::thread, std::this_thread::sleep_for
#include <chrono> // std::chrono::seconds
void pause_thread(int n)
{
std::this_thread::sleep_for (std::chrono::seconds(n));
std::cout << "pause of " << n << " seconds ended\n";
}
int main()
{
std::cout << "Spawning and detaching 3 threads...\n";
std::thread (pause_thread,1);
std::cout << "Done spawning threads.\n";
// give the detached threads time to finish (but not guaranteed!):
pause_thread(5);
return 0;
}
Wie kommt es, dass 'detach' nicht alles tun ?! Stellen Sie sich vor, dass, wenn der Haupt-Thread einen anderen Thread erzeugt, dieser abhängig von seinem Elternteil zu seinem Slave wird. Wenn Sie den untergeordneten Thread "trennen", bricht er los und lebt sein eigenes Leben. – ForceBru
@ForceBru Wie siehst du dieses Reflektieren in einem Programm? Jeder, der mir das erklärt, sagt mir dasselbe. dass der Thread "frei wird !!!" aber was bedeutet es????? –
bedeutet dies, dass dieser Thread jetzt unabhängig von anderen Threads ist: wenn sein Eltern-Thread beendet wird, läuft er weiter, während der 'Slave'-Thread in diesem Fall Selbstmord begehen muss. – ForceBru