Fixes #7203.
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/
53020044
// Put adds x to the pool.
func (p *Pool) Put(x interface{}) {
+ if raceenabled {
+ // Under race detector the Pool degenerates into no-op.
+ // It's conforming, simple and does not introduce excessive
+ // happens-before edges between unrelated goroutines.
+ return
+ }
if x == nil {
return
}
// If Get would otherwise return nil and p.New is non-nil, Get returns
// the result of calling p.New.
func (p *Pool) Get() interface{} {
+ if raceenabled {
+ if p.New != nil {
+ return p.New()
+ }
+ return nil
+ }
l := p.pin()
t := l.tail
if t > 0 {
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+// Pool is no-op under race detector, so all these tests do not work.
+// +build !race
+
package sync_test
import (