En el lenguaje Go, los paquetes atómicos proporcionan una memoria atómica de nivel inferior que es útil para implementar algoritmos de sincronización. La función StoreUintptr() en el lenguaje Go se usa para almacenar atómicamente val en *addr . Esta función se define en el paquete atómico. Aquí, debe importar el paquete «sync/atomic» para usar estas funciones.
Sintaxis:
func StoreUintptr(addr *uintptr, val uintptr)
Aquí, addr indica dirección.
Nota: (*uintptr) es el puntero a un valor de uintptr. Y uintptr es un tipo de entero que es demasiado grande para contener el patrón de bits de cualquier puntero.
Valor de retorno: almacena el valor en *addr y luego se puede devolver cuando sea necesario.
Ejemplo 1:
// Program to illustrate the usage of // StoreUintptr function in Golang // Including main package package main // importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Defining variables for // the address to store the val var ( x uintptr y uintptr ) // Using StoreUintptr method // with its parameters atomic.StoreUintptr(&x, 444443) atomic.StoreUintptr(&y, 223) // Displays the value stored in addr fmt.Println(atomic.LoadUintptr(&x)) fmt.Println(atomic.LoadUintptr(&y)) }
Producción:
444443 223
Aquí, primero, el valor de uintptr se almacena en las direcciones definidas y luego se devuelven utilizando el método LoadUintptr() anterior.
Ejemplo 2:
// Program to illustrate the usage of // StoreUintptr function in Golang // Including main package package main // importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Defining variables for // the address to store the val var ( x uintptr ) // Using StoreUintptr method // with its parameters atomic.StoreUintptr(&x, 5255151111) // Loading the stored val z := atomic.LoadUintptr(&x) // Prints true if values // are same else false fmt.Println(z == x) // Prints true if addresses // are same else false fmt.Println(&z == &x) }
Producción:
true false
Aquí, el valor almacenado y cargado es el mismo, por lo que se devuelve verdadero, pero sus direcciones no son las mismas, por lo que se devuelve falso en ese caso.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA