Ho creato un thread di boost utilizzando: boost :: thread thrd (& connectionThread); dove connectionThread è una semplice funzione void. Questo funziona bene, tuttavia, quando provo a farlo attendere alcuni secondi, ad esempio utilizzando:C++ Lasciando un thread di boost attendere 1 secondo
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += 1;
boost::thread::sleep(xt); // Sleep for 1 second
Il programma si blocca alla linea xtime_get. Anche quando provi manualmente a impostare xt.sec, non funziona. Ho provato diversi altri metodi, ma non riesco a farlo funzionare. C'è qualcosa che sto sbagliando? C'è un modo più semplice per raggiungere il mio obiettivo?
Altro informat necessario ion - questo si blocca sulla linea xtime_get? In caso affermativo, come si arresta in modo anomalo quando si imposta manualmente xt (o semplicemente non si comporta come si desidera)? –
In che modo non funziona quando si tenta di impostare manualmente xt.sec? xt.sec = 1 è probabilmente una quantità incredibilmente breve di tempo perché penso che sec sia almeno in millisecondi. Se è così, dormirai per un millisecondo. – Skurmedel
http://www.boost.org/doc/libs/1_38_0/doc/html/thread/time.html#thread.time.system_time sembra anche che la versione più recente della libreria ora utilizzi i componenti di boost :: date_time per specificare la durata. – Skurmedel