2011-06-27 17 views
6

Estoy usando std::atomic<unsigned int> en mi programa. ¿Cómo puedo imprimir su valor usando printf? Porque no funciona si solo uso %u. Sé que puedo usar cout, pero mi programa está lleno de llamadas printf y no quiero reemplazar cada una de ellas. Anteriormente estaba usando unsigned int en lugar de std::atomic<unsigned int>, así que solo estaba usando %u y, por lo tanto, la impresión funcionaba bien.¿Cómo puedo imprimir el valor de std :: atomic <unsigned int>

+0

que podría ayudar si usted nos muestra el código que ha intentado, y cómo no funcionó (mensaje de salida o error) – crashmstr

+2

'std :: atómica <>' 'tiene una carga()' para la función de miembro leyendo el valor (atómicamente :-). Puedes usar ese. –

+0

¿Realmente necesitas una variable atómica? 'std :: atomic' es para ordenar acceso de memoria a la variable para problemas de concurrencia. – AJG85

Respuesta

13
template<typename BaseType> 
struct atomic 
{ 
    operator BaseType() const volatile; 
} 

Utilice un tipo de transmisión para extraer el valor subyacente.

printf("%u", unsigned(atomic_uint)); 
Cuestiones relacionadas