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

¿Puede atomic_thread_fence(acquire) evitar que las cargas anteriores se reordenen después de sí misma?

Entiendo que atomic_thread_fence en C++ es bastante diferente a las acciones de almacenamiento/carga atómicos, y no es una buena práctica tratar de interpretarlas en términos de las instrucciones mfence/lfence/sfence de la CPU (tal vez x86). Si uso c.load(memory_order_acquire), ninguna acción de almacenamiento/carga después de c.load podrá ser reordenada antes de . . . Read more

Copie atómicamente un bit (o bits) en un entero

Tengo un código que copia bits enmascarados en un entero, primero limpiándolos en el entero de destino y luego combinándolos mediante la operación OR. Así: bitsToSet = 6 targetInt &= ~(1 << bitsToSet) targetInt |= desiredBitValue << bitsToSet El problema es que ahora necesita ser seguro para hilos, y necesito . . . Read more

Intentando hacer referencia a una función eliminada (constructor de copia)

Obtuve este ejemplo de spinlock de Anthony Williams, y hay algo mal en él (o yo tuve un largo día). #include <atomic> class spinlock { std::atomic_flag flag; public: spinlock() : flag(ATOMIC_FLAG_INIT) {} void lock() { while (flag.test_and_set(std::memory_order_acquire)); } void unlock(){ flag.clear(std::memory_order_release); } }; spinlock sl; void f() { std::lock_guard lc(sl); . . . Read more