• Wedson Almeida Filho's avatar
    sync: new Cond implementation · 8e7072ca
    Wedson Almeida Filho authored
    Change Cond implementation to use a notification list such that waiters
    can first register for a notification, release the lock, then actually
    wait. Signalers never have to park anymore.
    
    This is intended to address an issue in the previous implementation
    where Broadcast could fail to signal all waiters.
    
    Results of the existing benchmark are below.
    
                                              Original          New  Diff
    BenchmarkCond1-48        2000000               745 ns/op    755 +1.3%
    BenchmarkCond2-48        1000000              1545 ns/op   1532 -0.8%
    BenchmarkCond4-48         300000              3833 ns/op   3896 +1.6%
    BenchmarkCond8-48         200000             10049 ns/op  10257 +2.1%
    BenchmarkCond16-48        100000             21123 ns/op  21236 +0.5%
    BenchmarkCond32-48         30000             40393 ns/op  41097 +1.7%
    
    Fixes #14064
    
    Change-Id: I083466d61593a791a034df61f5305adfb8f1c7f9
    Reviewed-on: https://go-review.googlesource.com/18892Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
    Reviewed-by: 's avatarAustin Clements <austin@google.com>
    Run-TryBot: Caleb Spare <cespare@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    8e7072ca
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...