De acuerdo con la documentación, un atómico admite T que es de tipo integral, tipo de enumeración o un tipo de apuntador. ¿Intel TBB admite flotadores/dobles oficialmente? He visto algunos parches here y Raf Schietekat here, que podrían/no haber sido incorporados en la última versión 4.0. De los parches que he leído, la única diferencia importante que noté fue la adición de reinterpret_cast de tipo entero a float/double. Si alguien pudiera aclarar esto, lo agradecería. ¡Gracias!dobles/flotantes atómicos en Intel TBB
Respuesta
Puede agregar fácilmente soporte para números de coma flotante que se construyen sobre enteros atómicos de 64 y 32 bits. La carga atómica/almacenamiento/intercambio se puede implementar como envoltorios directos usando reinterpret_cast, las operaciones aritméticas atómicas se pueden implementar usando un bucle con intercambio de comparación atómica.
C++ 11 admite flotadores y dobles atómicos. Sin embargo, las funciones aritméticas como std::atomic_fetch_add
solo se admiten para tipos integrales.
Si tiene un compilador de C++ 11, le recomendaría cambiar a std::atomic
para que no tenga que depender del comportamiento no documentado.
La prueba para tipos no integrales en test_atomic.cpp se agregó en 2008 (poco después de la discusión con Raf). Por lo tanto, ya que incluso antes de la fecha de la pregunta, TBB admite float & doble atómica (aunque restringido a fetch_and_store y compare_and_exchange operaciones de lectura-modificación-escritura solamente).
- 1. Licencia de Intel TBB
- 2. Intel TBB vs Boost
- 3. Intel TBB: conjunto de gráficos
- 4. ¿Cómo instalas Intel TBB en OS X?
- 5. ¿Cómo funciona el scalable_allocator de Intel TBB?
- 6. Número de subprocesos utilizados por Intel TBB
- 7. Contadores atómicos en DynamoDB
- 8. ¿Son + =, | =, & = etc atómicos?
- 9. más simple TBB ejemplo
- 10. ¿Qué objetos son atómicos en Mathematica?
- 11. ¿Cómo enlazar estáticamente a TBB?
- 12. ¿Cómo construyo OpenCV con TBB?
- 13. ¿Alguna experiencia con los bloques de construcción Threading de Intel?
- 14. ¿Los grupos atómicos regex son distributivos?
- 15. CPUID en procesadores Intel i7
- 16. Compruebe si OpenCV está compilado con TBB
- 17. Biblioteca estándar Intel (C++)
- 18. Licencia de Intel Threading Building Blocks "runtime exception": ¿Qué significa?
- 19. Montaje en línea estilo Intel en gcc
- 20. ¿Cómo agregar dll de terceros en Tridion para C# TBB?
- 21. Eclipse con Intel Fortran depurador
- 22. Hotspot7 hsdis PrintAssembly Intel Sintaxis
- 23. Operaciones de escritura de archivos atómicos (plataforma cruzada)
- 24. ¿Es normal que los builtins atómicos gcc sean tan lentos?
- 25. Soporte de tipos atómicos de Visual C++ 2010?
- 26. Coaccionar flotador en unsigned char en ARM vs Intel
- 27. ¿Cómo puede objdump emitir sintaxis intel
- 28. Cercas en C++ 0x, garantías solo en atómicos o memoria en general
- 29. Intel MKL vs. AMD Math Core Library
- 30. compilación XCode para Intel 32-64bit solo
También vale la pena señalar que las funciones aritméticas se pueden emular de forma fácil y eficiente con 'std :: atomic'. –
Interesante. ¿Cuál es la mejor manera de hacerlo? ¿Es un ciclo de comparar y cambiar? (Obtenga el valor actual e intente cambiarlo por el nuevo resultado. Si falla porque se modificó el valor, vuelva a intentarlo) –
Sí, ese es el camino. –