Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.c++ > #4665
| From | logica mente <npaolini_no_spam_@ennepisoft.it> |
|---|---|
| Newsgroups | it.comp.lang.c++ |
| Subject | Re: Valore ritorno std::condition_variable::wait_for |
| Date | 2019-01-25 10:19 +0100 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <q2eka7$t84$1@gioia.aioe.org> (permalink) |
| References | <52cb9846-dfca-4ec6-abbb-061674a2ab6d@googlegroups.com> <q2e2g0$27e$1@dont-email.me> |
Il 25/01/2019 05:14, enoquick ha scritto: > Il 24/01/19 11:00, _merlinO_ ha scritto: >> Ho un problema col valore di ritorno di >> std::condition_variable::wait_for. >> >> Il mio test usa due thread che condividono lo stesso oggetto di >> sincronizzazione: >> >> -T1 rimane in attesa su una condition_variabile::wait_for con un >> timeout X secondi. >> -T2 attende N secondi e poi sveglia i thread in attesa (notify_all). >> >> 1- Se N < X (la notifica arriva prima del timeout) il valore di >> ritorno di wait_for è sempre no_timeout. >> >> 2- Se N > X (la notifica arriva dopo il timeout) il valore di ritorno >> di wait_for è a intermittenza timeout e no_timeout. >> >> Nel secondo caso il tempo di attesa è coerente, è solo il valore di >> ritorno che varia. Non riesco a capire il motivo. >> > > difficile dire il motivo > un bug nella implementazione usata o nel tuo programma ? > poiche ne sono incuriosito hai un piccolo programma per testare questa > cosa specificando l'os e la versione del compilatore che hai usato ? > Semplice, hai X < N < 2X (quasi sicuramente) supponiamo che i due thread partano in contemporanea, 1) il 1° thread arriva al timeout e quindi riparte. 2) Il 2° thread arriva a N, manda la notifica ed hai no_timeout. 3) I due thread ripartono da zero e si ritorna al caso (1) Se provi con 2X < N < 3X avrai in sequenza due timeout ed un no_timeout
Back to it.comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar
Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-24 09:00 -0800
Re: Valore ritorno std::condition_variable::wait_for enoquick <enoquick@gmail.com> - 2019-01-24 22:14 -0600
Re: Valore ritorno std::condition_variable::wait_for logica mente <npaolini_no_spam_@ennepisoft.it> - 2019-01-25 10:19 +0100
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-25 02:08 -0800
Re: Valore ritorno std::condition_variable::wait_for logica mente <npaolini_no_spam_@ennepisoft.it> - 2019-01-25 11:43 +0100
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-25 03:23 -0800
Re: Valore ritorno std::condition_variable::wait_for logica mente <npaolini_no_spam_@ennepisoft.it> - 2019-01-25 15:46 +0100
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-25 08:04 -0800
Re: Valore ritorno std::condition_variable::wait_for logica mente <npaolini_no_spam_@ennepisoft.it> - 2019-01-25 18:21 +0100
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-25 03:34 -0800
Re: Valore ritorno std::condition_variable::wait_for enoquick <enoquick@gmail.com> - 2019-01-27 09:18 -0600
Re: Valore ritorno std::condition_variable::wait_for enoquick <enoquick@gmail.com> - 2019-01-27 09:21 -0600
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-28 03:38 -0800
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-28 01:54 -0800
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-30 01:24 -0800
Re: Valore ritorno std::condition_variable::wait_for enoquick <enoquick@gmail.com> - 2019-01-30 20:36 -0600
Re: Valore ritorno std::condition_variable::wait_for _merlinO_ <emanuele.merlo@gmail.com> - 2019-01-31 02:37 -0800
Re: Valore ritorno std::condition_variable::wait_for enoquick <enoquick@gmail.com> - 2019-01-31 20:38 -0600
csiph-web