Commit 55ff3f70 authored by Rob Pike's avatar Rob Pike

sync: mention that WaitGroup.Add panics

Fixes #3839.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6428053
parent dfd7f181
...@@ -32,10 +32,11 @@ type WaitGroup struct { ...@@ -32,10 +32,11 @@ type WaitGroup struct {
// Add adds delta, which may be negative, to the WaitGroup counter. // Add adds delta, which may be negative, to the WaitGroup counter.
// If the counter becomes zero, all goroutines blocked on Wait() are released. // If the counter becomes zero, all goroutines blocked on Wait() are released.
// If the counter goes negative, Add panics.
func (wg *WaitGroup) Add(delta int) { func (wg *WaitGroup) Add(delta int) {
v := atomic.AddInt32(&wg.counter, int32(delta)) v := atomic.AddInt32(&wg.counter, int32(delta))
if v < 0 { if v < 0 {
panic("sync: negative WaitGroup count") panic("sync: negative WaitGroup counter")
} }
if v > 0 || atomic.LoadInt32(&wg.waiters) == 0 { if v > 0 || atomic.LoadInt32(&wg.waiters) == 0 {
return return
......
...@@ -50,7 +50,7 @@ func TestWaitGroup(t *testing.T) { ...@@ -50,7 +50,7 @@ func TestWaitGroup(t *testing.T) {
func TestWaitGroupMisuse(t *testing.T) { func TestWaitGroupMisuse(t *testing.T) {
defer func() { defer func() {
err := recover() err := recover()
if err != "sync: negative WaitGroup count" { if err != "sync: negative WaitGroup counter" {
t.Fatalf("Unexpected panic: %#v", err) t.Fatalf("Unexpected panic: %#v", err)
} }
}() }()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment