Tag: NON-VOLATILE
Quiero usar una estructura de campo de bits volátil para configurar un registro de hardware como en el siguiente código: union foo { uint32_t value; struct { uint32_t x : 1; uint32_t y : 3; uint32_t z : 28; }; }; union foo f = {0}; int main() { volatile . . . Read more
Entiendo que la palabra clave de Java volatile se utiliza en el contexto de multi-threading; el objetivo principal es leer de la memoria en lugar de la caché o incluso si se lee de la caché, se actualizará primero. En el siguiente ejemplo, no hay concepto de multi-threading. Quiero entender . . . Read more
import java.util.concurrent.TimeUnit; public class ThreadTest{ boolean runStatus = true; public void test(){ System.out.println(“¡¡¡test run!!!”); while (runStatus){ } System.out.println(“¡¡¡test end!!!”); } public static void main(String[] args) { ThreadTest threadTest = new ThreadTest(); new Thread(threadTest::test,”t1″).start(); try { TimeUnit.SECONDS.sleep(1); }catch (InterruptedException e){ e.printStackTrace(); } threadTest.runStatus = false; } } El código se ejecuta . . . Read more
Mientras redactaba una respuesta sobre cómo los compiladores deben tratar volatile, creo que puede haber encontrado un error en gcc y me gustaría que alguien lo verifique antes de informarlo. Escribí una función simple como esta: int foo (int a, int b, int c) { b = a + 1; . . . Read more
Algunas funciones de la biblioteca C omiten advertencias a través del compilador cuando se les pasan valores volatile; por ejemplo, memcpy(). Ahora me preguntaba si podría usar algunas conversiones volatile para asegurar una evaluación inmediata. Considere lo siguiente: int b; /* … */ (volatile int) b = 1; b = . . . Read more