blob: cc139309f9bf4dcd6c44e23e8e001d3a6934286a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package runners
import (
"sync/atomic"
"unsafe"
)
// atomic_pointer wraps an unsafe.Pointer with
// receiver methods for their atomic counterparts.
type atomic_pointer struct{ p unsafe.Pointer }
func (p *atomic_pointer) Load() unsafe.Pointer {
return atomic.LoadPointer(&p.p)
}
func (p *atomic_pointer) Store(ptr unsafe.Pointer) {
atomic.StorePointer(&p.p, ptr)
}
func (p *atomic_pointer) CAS(old, new unsafe.Pointer) bool {
return atomic.CompareAndSwapPointer(&p.p, old, new)
}
|