2009-10-27 19 views
5

El soporte reciente de GCC para atomic operations (como se describe here) es excelente, 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 enteras atómicas para Windows.Alternativas a las nuevas operaciones de número entero atómico de GCC

En el pasado, teníamos implementaciones de lenguaje de ensamblaje personalizadas para todas nuestras plataformas, pero me gustaría mover todas las plataformas * nix a las operaciones compatibles con GCC y el pensamiento cruzó por mi mente que tal vez también hay un estándar más forma de hacer esto en Windows ahora también ...

¿Existe alguna forma oficialmente aprobada de hacerlo en Windows (que no sea implementarlos en lenguaje ensamblador)?

+4

¿Está utilizando MinGW una opción? Están en la versión 4.4.0 de gcc, es decir, las operaciones atómicas deben estar disponibles; Evito el compilador de MS para la programación C de todos modos, ya que la compatibilidad con C99 es muy escasa ... – Christoph

Respuesta

6

Desea las funciones Interlocked.

+1

Sí. Un mejor enlace sería http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx: la página de resumen para todas las funciones de este tipo en Win32 API. –

+0

Buen punto. Siempre puedes simplemente editar mi respuesta, pero la he cambiado y la he cambiado aquí. :) –

0

Depende de cuál de los necesite: no creo que haya una implementación (preconstruida) de cada uno de ellos en Windows (excepto posiblemente dentro de gcc), pero algunos de ellos han existido durante bastante tiempo. mientras. Windows tiene InterlockedIncrement, InterlockedDecrement, InterlockedAdd, InterlockedOr, InterlockedXor, y así sucesivamente.