Bonsoir tout le monde,
Voila je me prend la téte avec ca depuis ce matin!
Je ne trouve pas comment on peut arreter un thread crée avec la biblio. Boost.Thread, La documentation dans boost.org étant un peu pauvre ...
J'ai vu qu'on pouvait l'endormir avec la méthode sleep() , une autre méthode yield() sert
à le mettre dans un état Ready , par contre pas de méthodes pour l'arreter.
J'ai repris un exemple du site officiel de Boost et je l'ai modifier pour qu'il boucle à l'infini, si quelqu'un peut me dire quoi ajouter pour arreter l'execution je lui serai tres reconnaissant.
Voici mon code :
Merci
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 #include <boost/thread/thread.hpp> #include <boost/thread/xtime.hpp> #include <iostream> using namespace std; struct thread_alarm { thread_alarm(int secs) : m_secs(secs) { } void operator()() { int cpt =0; boost::xtime xt; boost::xtime_get(&xt, boost::TIME_UTC); xt.sec += m_secs; boost::thread::sleep(xt); std::cout << "alarm sounded..." << std::endl; while(1){ if(cpt > 1000){ /* Comment Arreter le thread et sortir ? */ } } } int m_secs; }; int main(int argc, char* argv[]) { int secs = 5; std::cout << "setting alarm for 5 seconds..." << std::endl; thread_alarm alarm(secs); boost::thread thrd(alarm); thrd.join(); }
Partager