2016-07-07 5 views
-3

zu stoppen Wenn ich einen Testfall haben alsGtest wie alle laufenden Threads

TEST(one, test_one) { 
    vector<thread> threads 
    // ... initialize threads 
} 

folgt und irgendwo in diesen Themen eine Behauptung aus, wie verhindere ich, alle Themen und beenden? weil es so aussieht, als ob die Funktion ab sofort ausgeführt wird.

+2

Oh Junge, das hängt vollständig davon ab, wie Sie Ihre Threads mit einem _runable_ Zustand synchronisiert haben. –

+0

Etwas in den Zeilen von [Death Tests] (http://stackoverflow.com/questions/3698718/what-are-google-test-death-tests) vielleicht. –

Antwort

1

Wie kann ich alle Threads stoppen und beenden?

Es kann nicht ohne Interaktionen von Ihrer Klasse getestet werden, und die Threads, die es tatsächlich betrifft.

Wenn Sie eine Klasse im Test haben, die mehrere Threads ausführt, sollten Sie eine Implementierung im Destruktor haben, um Threads zu signalisieren, dass sie anhalten und sich ihnen anschließen sollen.


Obwohl ich nach dem Vorbild eines death test Rettung von einer erwarteten assert() Aussage, und der gesamte Prozess wird getötet (daher keinen Grund zur Sorge über andere Threads beendet wird) über etwas denken konnte.

+0

Ich schätze, die gleiche Person, die die Frage abgelehnt hat, machte das gleiche hier – Curious

+0

@KerrekSB Es ist inzwischen verschwunden. –