OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.22.0
/
src
/
sync
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/02/2024 06:09:55 PM
rwxr-xr-x
📁
atomic
-
02/02/2024 06:09:55 PM
rwxr-xr-x
📄
cond.go
3.96 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
cond_test.go
4.96 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
example_pool_test.go
1017 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
example_test.go
1.13 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
export_test.go
1.2 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
map.go
14.98 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
map_bench_test.go
11.25 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
map_reference_test.go
5.41 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
map_test.go
6.74 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
mutex.go
8.27 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
mutex_test.go
5.94 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
once.go
2.4 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
once_test.go
1.1 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
oncefunc.go
2 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
oncefunc_test.go
6.94 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
pool.go
9 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
pool_test.go
8.1 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
poolqueue.go
8.73 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
runtime.go
2.33 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
runtime2.go
465 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
runtime2_lockrank.go
546 bytes
02/02/2024 06:09:55 PM
rw-r--r--
📄
runtime_sema_test.go
1.34 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
rwmutex.go
7.02 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
rwmutex_test.go
4.89 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
waitgroup.go
3.87 KB
02/02/2024 06:09:55 PM
rw-r--r--
📄
waitgroup_test.go
3.01 KB
02/02/2024 06:09:55 PM
rw-r--r--
Editing: once_test.go
Close
// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package sync_test import ( . "sync" "testing" ) type one int func (o *one) Increment() { *o++ } func run(t *testing.T, once *Once, o *one, c chan bool) { once.Do(func() { o.Increment() }) if v := *o; v != 1 { t.Errorf("once failed inside run: %d is not 1", v) } c <- true } func TestOnce(t *testing.T) { o := new(one) once := new(Once) c := make(chan bool) const N = 10 for i := 0; i < N; i++ { go run(t, once, o, c) } for i := 0; i < N; i++ { <-c } if *o != 1 { t.Errorf("once failed outside run: %d is not 1", *o) } } func TestOncePanic(t *testing.T) { var once Once func() { defer func() { if r := recover(); r == nil { t.Fatalf("Once.Do did not panic") } }() once.Do(func() { panic("failed") }) }() once.Do(func() { t.Fatalf("Once.Do called twice") }) } func BenchmarkOnce(b *testing.B) { var once Once f := func() {} b.RunParallel(func(pb *testing.PB) { for pb.Next() { once.Do(f) } }) }