Преглед на файлове

feat: CompareAndSwapInt32 may be better than AddInt32 (#2077)

wxc преди 2 години
родител
ревизия
d200ba4a7b
променени са 1 файла, в които са добавени 2 реда и са изтрити 4 реда
  1. 2 4
      core/mr/mapreduce.go

+ 2 - 4
core/mr/mapreduce.go

@@ -376,9 +376,7 @@ type onceChan struct {
 }
 
 func (oc *onceChan) write(val interface{}) {
-	if atomic.AddInt32(&oc.wrote, 1) > 1 {
-		return
+	if atomic.CompareAndSwapInt32(&oc.wrote, 0, 1) {
+		oc.channel <- val
 	}
-
-	oc.channel <- val
 }