Bonjour à tous,
je viens de débuter la gestion de threads en C++, et je tente d'en stopper un. Je sais que la librairie ne permet pas de le faire et pourquoi. J'ai donc recours au code suivant minimal.
Néanmoins, quand je presse une touche, le threads qui affiche "Hello you" ne s'arrête pas, je ne vois pas "Thread stopped".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <iostream> #include <chrono> #include <thread> using namespace std; std::chrono::seconds sec(1); class Runnable { public: bool stop; Runnable(bool b = false) : stop(b) {} void operator()() { while(! stop) { cout << "Hello you" << endl; this_thread::sleep_for(sec); } cout << "Thread stopped" << endl; } }; int main() { Runnable r; thread t(r); bool stop = false; while(! stop) { cout << "Press anything to stop" << endl; char c; cin >> c; r.stop = true; this_thread::sleep_for(sec); stop = true; } }
Qu'est-ce que je fais de mal ?
Partager