File tree Expand file tree Collapse file tree 1 file changed +7
-7
lines changed Expand file tree Collapse file tree 1 file changed +7
-7
lines changed Original file line number Diff line number Diff line change @@ -11,33 +11,33 @@ package main
11
11
12
12
import (
13
13
"runtime"
14
- "sync/atomic"
15
14
"unsafe"
16
15
)
17
16
18
- var done uint32
17
+ var done = make ( chan bool )
19
18
20
19
func setup () unsafe.Pointer {
21
20
s := "ok"
22
- runtime .SetFinalizer (& s , func (p * string ) { atomic . StoreUint32 ( & done , 1 ) })
21
+ runtime .SetFinalizer (& s , func (p * string ) { close ( done ) })
23
22
return unsafe .Pointer (& s )
24
23
}
25
24
26
25
//go:noinline
27
26
//go:uintptrescapes
28
27
func before (p uintptr ) int {
29
28
runtime .GC ()
30
- if atomic .LoadUint32 (& done ) != 0 {
29
+ select {
30
+ case <- done :
31
31
panic ("GC early" )
32
+ default :
32
33
}
33
34
return 0
34
35
}
35
36
36
37
func after () int {
37
38
runtime .GC ()
38
- if atomic .LoadUint32 (& done ) == 0 {
39
- panic ("GC late" )
40
- }
39
+ runtime .GC ()
40
+ <- done
41
41
return 0
42
42
}
43
43
You can’t perform that action at this time.
0 commit comments