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 CompareAndSwapInt32() en el lenguaje Go se utiliza para realizar la operación de comparación e intercambio de un valor int32 . Esta función se define en el paquete atómico. Aquí, debe importar el paquete «sync/atomic» para usar estas funciones.
Sintaxis:
func CompareAndSwapInt32(addr *int32, old, new int32) (swapped bool)
Aquí, addr indica la dirección, old indica el valor int32 que es el valor intercambiado anterior que se devuelve de la operación intercambiada, y new es el nuevo valor int32 que se intercambiará a sí mismo desde el valor intercambiado anterior.
Nota: (*int32) es el puntero a un valor int32. Y int32 es un tipo entero de tamaño de bit 32. Además, int32 contiene el conjunto de todos los enteros de 32 bits con signo desde -2147483648 hasta 2147483647.
Valor devuelto: Devuelve verdadero si se logra el intercambio; de lo contrario, devuelve falso.
Ejemplo 1:
// Golang Program to illustrate the usage of // CompareAndSwapInt32 function // Including main package package main // importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Assigning variable values to the int32 var ( i int32 = 111 ) // Swapping var old_value = atomic.SwapInt32(&i, 498) // Printing old value and swapped value fmt.Println("Swapped:", i, ", old value:", old_value) // Calling CompareAndSwapInt32 method with its parameters Swap := atomic.CompareAndSwapInt32(&i, 498, 675) // Displays true if swapped else false fmt.Println(Swap) fmt.Println("The Value of i is: ",i) }
Producción:
Swapped: 498 , old value: 111 true The Value of i is: 675
Ejemplo 2:
// Golang Program to illustrate the usage of // CompareAndSwapInt32 function // Including main package package main // importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Assigning variable values to the int32 var ( i int32 = 111 ) // Swapping var old_value = atomic.SwapInt32(&i, 498) // Printing old value and swapped value fmt.Println("Swapped:", i, ", old value:", old_value) // Calling CompareAndSwapInt32 // method with its parameters Swap := atomic.CompareAndSwapInt32(&i, 111, 675) // Displays true if // swapped else false fmt.Println(Swap) fmt.Println("The Value of i is: ",i) }
Producción:
Swapped: 498 , old value: 111 false The Value of i is: 498
Aquí, el valor anterior en el método CompareAndSwapInt32 debe ser el valor intercambiado devuelto por el método SwapInt32 . Y aquí el intercambio no se realiza, por lo que 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