Alternativas a las nuevas operaciones de números enteros atómicos de GCC
-
06-07-2019 - |
Pregunta
Soporte reciente de GCC para operaciones atómicas (como se describe aquí ) es genial y es el 90% de lo que necesitamos . Desafortunadamente, algunos de nuestros productos aún necesitan ejecutarse en Windows, por lo que también necesitamos operaciones de números enteros atómicos para Windows.
En el pasado, teníamos implementaciones de lenguaje ensamblador personalizadas para todas nuestras plataformas, pero me gustaría mover todas las plataformas * nix a las operaciones compatibles con GCC y se me ocurrió que tal vez también haya una forma más estándar para hacer esto en Windows ahora también ...
¿Hay alguna forma oficial de hacerlo en Windows (que no sea implementarlas usted mismo en lenguaje ensamblador)?
Solución
Desea las funciones Interbloqueado .
Otros consejos
Depende de cuáles necesites: no creo que haya una implementación (precompilada) de cada uno de ellos en Windows (excepto posiblemente dentro de gcc), pero algunos de ellos han existido durante bastante tiempo . Windows tiene InterlockedIncrement, InterlockedDecrement, InterlockedAdd, InterlockedOr, InterlockedXor, y así sucesivamente.
GLib proporciona algunas operaciones atómicas , y Se sabe que se ejecutan en Windows. Puede inspeccionar las fuentes para obtener ideas o elegir directamente el código usted necesita.