Source file src/internal/runtime/atomic/types_64bit.go

     1  // Copyright 2021 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build amd64 || arm64 || loong64 || mips64 || mips64le || ppc64 || ppc64le || riscv64 || s390x || wasm
     6  
     7  package atomic
     8  
     9  // LoadAcquire is a partially unsynchronized version
    10  // of Load that relaxes ordering constraints. Other threads
    11  // may observe operations that precede this operation to
    12  // occur after it, but no operation that occurs after it
    13  // on this thread can be observed to occur before it.
    14  //
    15  // WARNING: Use sparingly and with great care.
    16  //
    17  //go:nosplit
    18  func (u *Uint64) LoadAcquire() uint64 {
    19  	return LoadAcq64(&u.value)
    20  }
    21  
    22  // StoreRelease is a partially unsynchronized version
    23  // of Store that relaxes ordering constraints. Other threads
    24  // may observe operations that occur after this operation to
    25  // precede it, but no operation that precedes it
    26  // on this thread can be observed to occur after it.
    27  //
    28  // WARNING: Use sparingly and with great care.
    29  //
    30  //go:nosplit
    31  func (u *Uint64) StoreRelease(value uint64) {
    32  	StoreRel64(&u.value, value)
    33  }
    34  

View as plain text