Concurrency Coordination Reports
Once-Do Coordination Report
Record write-once initialization and report accepted versus skipped runs.
Once-Do Coordination Report
once_do_coordination_report.go
package main
import (
"fmt"
"sync"
)
func main() {
var writes =
var once sync.Once
accepted := 0
skipped := 0
stored := 0
for value := 1; value <= writes; value++ {
ran := false
once.Do(func() {
ran = true
stored = value
})
if ran {
accepted++
} else {
skipped++
}
}
var status string
if accepted == 0 {
status = "unset"
} else if skipped > 0 {
status = "locked"
} else {
status = "set"
}
fmt.Printf("accepted=%d skipped=%d stored=%d %s\n", accepted, skipped, stored, status)
}
package main
import (
"fmt"
"sync"
)
func main() {
var writes =
var once sync.Once
accepted := 0
skipped := 0
stored := 0
for value := 1; value <= writes; value++ {
ran := false
once.Do(func() {
ran = true
stored = value
})
if ran {
accepted++
} else {
skipped++
}
}
var status string
if accepted == 0 {
status = "unset"
} else if skipped > 0 {
status = "locked"
} else {
status = "set"
}
fmt.Printf("accepted=%d skipped=%d stored=%d %s\n", accepted, skipped, stored, status)
}
package main
import (
"fmt"
"sync"
)
func main() {
var writes =
var once sync.Once
accepted := 0
skipped := 0
stored := 0
for value := 1; value <= writes; value++ {
ran := false
once.Do(func() {
ran = true
stored = value
})
if ran {
accepted++
} else {
skipped++
}
}
var status string
if accepted == 0 {
status = "unset"
} else if skipped > 0 {
status = "locked"
} else {
status = "set"
}
fmt.Printf("accepted=%d skipped=%d stored=%d %s\n", accepted, skipped, stored, status)
}
write-once cell
`sync.Once.Do` runs its function exactly once across every call, so the first offered write is accepted and stores its value while every later write is skipped. The accepted and skipped counts report whether the cell stayed unset, was set once, or locked out a later write, and the stored value shows what the first accepted write left behind.