Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.c++ > #4665

Re: Valore ritorno std::condition_variable::wait_for

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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