InterlockIncrement - wie kann ich es benutzen ?



  • Hallo, wie kann ich denn in VC++ 6.0 InterlockIncrement benutzen ???
    Also irgendwie will dass einfach nicht.

    Vielen Dank für die Antworten !



  • etwa so:

    LONG x = 123L;
    printf ("vorher: %ld\n", x);
    InterlockedIncrement (&x);
    printf ("nachher: %ld\n", x);
    

    sollte ergeben:
    123
    124



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Tipp: du kannst über folgende Deklaration:

    extern "C" _InterlockedIncrement(LPLONG lpAddend);
    #pragma intrinsic(_InterlockedIncrement)
    

    die "inline-Variante _InterlockedIncrement() verfügbar machen.

    (dokumentiert ab VC7, geht aber auch schon in VC6)



  • Vielen Dank für eure Tipps.

    Leider funzt das noch net so ganz.
    Wenn ich das mit dem extern mach, bekomme ich ne unhandled exeption.

    Mach ichs so wie in der MSDN beschrieben, fehlen mir h. files, die nur in neueren Studios vorhanden sind "instrin.h" u.ä.

    Lass ich nur pragma stehen, findet er die funktion net...

    Lieb Grüße Dieter



  • Du brauchst schon beide Zeilen - das Pragma und die "extern" - Deklaration (*mit* dem Unterstrich vorn!)

    Aber wenn du Probleme hast solltest du erstmal mit dem "normalen" InterlockedIncrement arbeiten, um den Fehler zu isolieren.

    Unter VC6 reicht #include <windows.h> (selbst mit dem 98' PDSK) - wo steht in der MSDN was von "intrins.h"?


Log in to reply