• Similar to the fixes for subscriber, without holding the waiter_lock_,
    updating the waiting_done_ flag may cause deadlock. In the deadlock
    example below, Thread1 is waiting for the response, thread 2 is
    processing the response and updating the waiter_lock_ variable:
    
    ----------------------------------------------------
    |        Thread 1          |       Thread 2        |
    ----------------------------------------------------
    | locks 'waiter_lock_'     |                       |
    | check 'waiting_done_'    |                       |
    |                          | Update 'waiting done' |
    |                          | Send notification     |
    | begin waiting for signal |                       |
    | *deadlocked*             |                       |
    ----------------------------------------------------
    Collin Hockey authored
     
    Browse Code »
  • The lock used with the condition variable should always be the same one
    guarding changes to the condition itself, in these cases, the lock
    guarding changes to the subscribe and psubscibe data structures.
    
    This commit also limits the number of locks held by the subscribeBase
    function at any one time.
    Collin Hockey authored
     
    Browse Code »












  • User can now enable no-wait mode, which chooses whether we use the
    EVRUN_NOWAIT flag in ev_run. The default is off, so that we don't
    use 100% CPU. Note added in tutorial to enable when performance
    is critical. Added to the speed test examples.
    
    Bump to 0.2.1. Remove patch number from HISTORY entry - that's what the
    git log is for. Make note on minor release.
    Hayk Martirosyan authored
     
    Browse Code »