| 8 | ) |
| 9 | |
| 10 | func main() { |
| 11 | i32 := int32(-5) |
| 12 | println("AddInt32:", atomic.AddInt32(&i32, 8), i32) |
| 13 | |
| 14 | i64 := int64(-5) |
| 15 | println("AddInt64:", atomic.AddInt64(&i64, 8), i64) |
| 16 | |
| 17 | u32 := uint32(5) |
| 18 | println("AddUint32:", atomic.AddUint32(&u32, 8), u32) |
| 19 | |
| 20 | u64 := uint64(5) |
| 21 | println("AddUint64:", atomic.AddUint64(&u64, 8), u64) |
| 22 | |
| 23 | uptr := uintptr(5) |
| 24 | println("AddUintptr:", uint64(atomic.AddUintptr(&uptr, 8)), uint64(uptr)) |
| 25 | |
| 26 | println("SwapInt32:", atomic.SwapInt32(&i32, 33), i32) |
| 27 | println("SwapInt64:", atomic.SwapInt64(&i64, 33), i64) |
| 28 | println("SwapUint32:", atomic.SwapUint32(&u32, 33), u32) |
| 29 | println("SwapUint64:", atomic.SwapUint64(&u64, 33), u64) |
| 30 | println("SwapUintptr:", uint64(atomic.SwapUintptr(&uptr, 33)), uint64(uptr)) |
| 31 | ptr := unsafe.Pointer(&i32) |
| 32 | println("SwapPointer:", atomic.SwapPointer(&ptr, unsafe.Pointer(&u32)) == unsafe.Pointer(&i32), ptr == unsafe.Pointer(&u32)) |
| 33 | |
| 34 | i32 = int32(-5) |
| 35 | println("CompareAndSwapInt32:", atomic.CompareAndSwapInt32(&i32, 5, 3), i32) |
| 36 | println("CompareAndSwapInt32:", atomic.CompareAndSwapInt32(&i32, -5, 3), i32) |
| 37 | |
| 38 | i64 = int64(-5) |
| 39 | println("CompareAndSwapInt64:", atomic.CompareAndSwapInt64(&i64, 5, 3), i64) |
| 40 | println("CompareAndSwapInt64:", atomic.CompareAndSwapInt64(&i64, -5, 3), i64) |
| 41 | |
| 42 | u32 = uint32(5) |
| 43 | println("CompareAndSwapUint32:", atomic.CompareAndSwapUint32(&u32, 4, 3), u32) |
| 44 | println("CompareAndSwapUint32:", atomic.CompareAndSwapUint32(&u32, 5, 3), u32) |
| 45 | |
| 46 | u64 = uint64(5) |
| 47 | println("CompareAndSwapUint64:", atomic.CompareAndSwapUint64(&u64, 4, 3), u64) |
| 48 | println("CompareAndSwapUint64:", atomic.CompareAndSwapUint64(&u64, 5, 3), u64) |
| 49 | |
| 50 | uptr = uintptr(5) |
| 51 | println("CompareAndSwapUintptr:", atomic.CompareAndSwapUintptr(&uptr, 4, 3), uint64(uptr)) |
| 52 | println("CompareAndSwapUintptr:", atomic.CompareAndSwapUintptr(&uptr, 5, 3), uint64(uptr)) |
| 53 | |
| 54 | ptr = unsafe.Pointer(&i32) |
| 55 | println("CompareAndSwapPointer:", atomic.CompareAndSwapPointer(&ptr, unsafe.Pointer(&u32), unsafe.Pointer(&i64)), ptr == unsafe.Pointer(&i32)) |
| 56 | println("CompareAndSwapPointer:", atomic.CompareAndSwapPointer(&ptr, unsafe.Pointer(&i32), unsafe.Pointer(&i64)), ptr == unsafe.Pointer(&i64)) |
| 57 | |
| 58 | println("LoadInt32:", atomic.LoadInt32(&i32)) |
| 59 | println("LoadInt64:", atomic.LoadInt64(&i64)) |
| 60 | println("LoadUint32:", atomic.LoadUint32(&u32)) |
| 61 | println("LoadUint64:", atomic.LoadUint64(&u64)) |
| 62 | println("LoadUintptr:", uint64(atomic.LoadUintptr(&uptr))) |
| 63 | println("LoadPointer:", atomic.LoadPointer(&ptr) == unsafe.Pointer(&i64)) |
| 64 | |
| 65 | atomic.StoreInt32(&i32, -20) |
| 66 | println("StoreInt32:", i32) |
| 67 | |