2009-10-27 15 views
5

Le support récent de GCC pour atomic operations (comme décrit here) est excellent, et représente 90% de ce dont nous avons besoin. Malheureusement, certains de nos produits doivent encore fonctionner sous Windows et nous avons donc besoin d'opérations entières atomiques pour Windows. Par le passé, nous avions des implémentations de langage assembleur personnalisées pour toutes nos plates-formes, mais je souhaitais déplacer toutes les plates-formes * nix vers les opérations prises en charge par GCC et la pensée m'a traversé l'esprit qu'il y avait peut-être aussi façon de faire cela sur Windows maintenant aussi bien ...Alternatives aux nouvelles opérations d'entiers atomiques de GCC

Existe-t-il une manière officielle de faire cela sur Windows (autre que de les implémenter vous-même en langage assembleur)?

+4

L'utilisation de MinGW est-elle une option? Ils sont à la version 4.4.0 de gcc, c'est-à-dire que les opérations atomiques devraient être disponibles; J'évite de toute façon le compilateur MS pour la programmation C car le support C99 manque cruellement ... – Christoph

Répondre

6

Vous voulez les fonctions Interlocked.

+1

Yup. Un meilleur lien serait http://msdn.microsoft.com/en-us/library/ms684122(VS.85).aspx - la page de résumé pour toutes ces fonctions dans l'API Win32. –

+0

Bon point. Vous pouvez toujours modifier ma réponse, mais je suis allé et l'ai changé ici. :) –

0

Cela dépend de ceux dont vous avez besoin - je ne pense pas qu'il existe une implémentation (pré-compilée) de chacun d'entre eux sur Windows (sauf peut-être dans gcc) mais certains d'entre eux existent depuis un certain temps tandis que. Windows a InterlockedIncrement, InterlockedDecrement, InterlockedAdd, InterlockedOr, InterlockedXor et ainsi de suite.