es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tag: ATOMIC

¿Existe alguna forma de tener una versión del método compare_exchange_strong de std::atomic que intercambie en caso de desigualdad?

Tengo un tipo atómico en el que necesito compararlo atómicamente con un valor, y si los dos valores no son iguales, intercambiar el valor del atómico. En otras palabras, donde compare_exchange_strong básicamente realiza esta operación atómicamente: if (atomic_value == expected) atomic_value = desired; …Estoy buscando una forma de hacer esto: . . . Read more

C incorporado o asm en línea para bloqueo ORe

¿Hay alguna función incorporada para esta operación (en C)? lock or QWORD […], … De hecho, estoy buscando el uso de lock or en C. Si no hay ninguna función incorporada, ¿cómo puedo escribirlo en C usando ensamblador inline? Estoy utilizando GCC (versión C 11).

Java AtomicInteger vs array de un solo elemento para streams En el contexto de los streams en Java, es común encontrarse con situaciones en las que se necesita almacenar valores mutables mientras se realiza un procesamiento secuencial o paralelo. Cuando se trata de almacenar un solo valor mutable, existen dos enfoques populares: utilizar un objeto AtomicInteger o utilizar un array de un solo elemento. AtomicInteger es una clase provista por Java que encapsula un valor entero mutable que puede ser actualizado de manera atómica. Esto significa que múltiples hilos pueden acceder y modificar el valor sin preocuparse por la interferencia mutua. Es especialmente útil en contextos de concurrencia y paralelismo, como cuando se utilizan streams en Java. Por otro lado, también es posible utilizar un array de un solo elemento para almacenar un valor mutable. Aunque puede parecer más simple y más familiar, utilizar un array introduce un ligero costo adicional debido a la necesidad de crear un objeto array y acceder al valor almacenado a través de su índice. En general, si solo necesitas almacenar un único valor mutable durante el procesamiento de streams en Java, es recomendable utilizar AtomicInteger. Proporciona una interfaz clara y sencilla para actualizar y acceder de manera segura al valor en situaciones de concurrencia. Sin embargo, si prefieres una solución más simple o si necesitas almacenar múltiples valores en algún momento, podrías considerar la opción de utilizar un array de un solo elemento. Recuerda que el uso de AtomicInteger o un array de un solo elemento depende del contexto y de los requisitos específicos de tu código. También es importante tener en cuenta el rendimiento y la legibilidad del código al tomar esta decisión.

int[] arr = new int[]{0}; l.stream().forEach(x -> {if (x > 10 && x < 15) { arr[0] += 1;}}); l es List. Aquí utilizo un elemento del arreglo arr para almacenar el valor que cambia dentro del flujo. Una solución alternativa es utilizar una instancia de la clase AtomicInteger. Pero . . . Read more