Skip to content
  • Loic Dachary's avatar
    64ded02c
    Relax Throttle::_reset_max conditions and associated unit tests · 64ded02c
    Loic Dachary authored
    
    
    Removes a condition in Throttle::_reset_max by which the waiting queue is only
    Signal()ed if the new maximum is lower than the current maximum.
    There is no evidence of a use case where such a restriction would be
    useful. In addition waking up a thread when the maximum increases
    gives it a chance to immediately continue the suspended process
    instead of waiting for the next put().
    
    Create a new test file covering 100% of src/Throttle.{cc,h} lines of code.
    The following methods are tested:
    
    * Throttle::Throttle with and without a maximum
    * Throttle::~Throttle when each pending Cond is deleted
    * Throttle::take
    * Throttle::get when updating the maximum ( lower or higher ),
      when going to sleep waiting for the count to lower under
      the maximum, when going to sleep because another thread is
      already asleep waiting
    * Throttle::get_or_fail when there is no maximum,
      when requesting a count that is larger than the maximum, either
      when the current value is under the maximum or above the maximum.
    * Throttle::wait when used to reset the maximum and wake up
      another thread asleep waiting
    
    All asserts checking the arguments sanity are exercised ( negative argument
    for Throttle::take etc. ).
    Adds the LGPLv2+ licensing terms to COPYING along with the others.
    Adds a Contributors section to the AUTHORS file.
    
    Notes:
    Testing asserts outputs verbose error messages that should be silenced
    but it does not seem possible.
    
    Signed-off-by: default avatarLoic Dachary <[email protected]>
    64ded02c
    Relax Throttle::_reset_max conditions and associated unit tests
    Loic Dachary authored
    
    
    Removes a condition in Throttle::_reset_max by which the waiting queue is only
    Signal()ed if the new maximum is lower than the current maximum.
    There is no evidence of a use case where such a restriction would be
    useful. In addition waking up a thread when the maximum increases
    gives it a chance to immediately continue the suspended process
    instead of waiting for the next put().
    
    Create a new test file covering 100% of src/Throttle.{cc,h} lines of code.
    The following methods are tested:
    
    * Throttle::Throttle with and without a maximum
    * Throttle::~Throttle when each pending Cond is deleted
    * Throttle::take
    * Throttle::get when updating the maximum ( lower or higher ),
      when going to sleep waiting for the count to lower under
      the maximum, when going to sleep because another thread is
      already asleep waiting
    * Throttle::get_or_fail when there is no maximum,
      when requesting a count that is larger than the maximum, either
      when the current value is under the maximum or above the maximum.
    * Throttle::wait when used to reset the maximum and wake up
      another thread asleep waiting
    
    All asserts checking the arguments sanity are exercised ( negative argument
    for Throttle::take etc. ).
    Adds the LGPLv2+ licensing terms to COPYING along with the others.
    Adds a Contributors section to the AUTHORS file.
    
    Notes:
    Testing asserts outputs verbose error messages that should be silenced
    but it does not seem possible.
    
    Signed-off-by: default avatarLoic Dachary <[email protected]>
This project is licensed under the GNU Lesser General Public License v2.1 only. Learn more
Loading