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 CompareAndSwapUint32() en el lenguaje Go se usa para realizar la operación de comparación e intercambio para un valor uint32 . Esta función se define en el paquete atómico. Aquí, debe importar el paquete «sync/atomic» para usar estas funciones.
Sintaxis:
func CompareAndSwapUint32(addr *uint32, old, new uint32) (swapped bool)
Aquí, addr indica la dirección, old indica el valor de uint32 que es el anterior y new es el nuevo valor de uint32 que se cambiará a sí mismo del valor anterior.
Nota: (*uint32) es el puntero a un valor uint32. Y uint32 es un tipo entero de tamaño de bit 32. Además, int32 contiene el conjunto de todos los enteros de 32 bits sin signo que van desde 0 a 4294967295.
Valor devuelto: Devuelve verdadero si se logra el intercambio; de lo contrario, devuelve falso.
Ejemplo 1:
// Golang Program to illustrate the usage of // CompareAndSwapUint32 function // Including main package package main // importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Assigning variable values to the uint32 var ( i uint32 = 34764 ) // Calling CompareAndSwapUint32 // method with its parameters Swap := atomic.CompareAndSwapUint32(&i, 34764, 67576) // Displays true if swapped else false fmt.Println(Swap) fmt.Println("The value of i is: ",i) }
Producción:
true The value of i is: 67576
Ejemplo 2:
// Golang Program to illustrate the usage of // CompareAndSwapUint32 function // Including main package package main // importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Assigning variable values to the uint32 var ( i uint32 = 54325 ) // Swapping operation var oldvalue = atomic.SwapUint32(&i, 7687) // Printing old value and swapped value fmt.Println("Swapped_value:", i, ", old_value:", oldvalue) // Calling CompareAndSwapUint32 method with its parameters Swap := atomic.CompareAndSwapUint32(&i, 54325, 677876) // Displays true if swapped else false fmt.Println(Swap) fmt.Println("The value of i is: ",i) }
Producción:
Swapped_value: 7687 , old_value: 54325 false The value of i is: 7687
Aquí, el valor intercambiado obtenido de la operación de intercambio debe ser el valor anterior, por eso se devuelve falso.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA