C ++ 0x aplicación plantilla atómica
-
22-08-2019 - |
Pregunta
Sé que las salidas plantilla similares en TBB de Intel, además de que no puedo encontrar ninguna aplicación en Google o en la biblioteca Boost.
Solución
Puede encontrar discusiones acerca de esta implementación en función de impulso que hay: http: //lists.boost.org/Archives/boost/2008/11/144803.php
> ¿Puede el N2427 - Tipos C ++ atómicas y Operaciones implementarse
> sin la ayuda del compilador?
No.
No necesitan ser intrínsecos si se puede escribir ensamblador (o ensamblador separado-compilado para el caso), entonces se puede escribir la operaciones mismos directamente. Tú incluso podría ser capaz de utilizar C ++ simple (Asignación por ejemplo, simplemente para la carga o tienda). La razón por la que necesita compilador de soporte está impidiendo optimizaciones inapropiados: atómica operaciones no se pueden optimizar, y en general, no debe ser reordenado antes o después de cualquier otra operación. Esto significa que incluso no atómica tiendas realizan antes de un atómica tienda tiene que ser completa, y no puede almacenarse en caché en un registro (por ejemplo). Además, las cargas que se producen después de una operación atómica no puede ser izada antes de la op atómica. En algunos compiladores, simplemente utilizando ensamblador es suficiente. En otros, llamando a una función externa es suficiente. MSVC proporciona _ReadWriteBarrier () para proporcionar el ordenamiento compilador. otros compiladores necesitará otras banderas.