Ich portiere derzeit eine Windows C++ - Bibliothek als Hobby-Projekt als Lernerfahrung nach MacOS. Ich bin über einen Code mit den Win Interlocked * -Funktionen gestolpert und habe daher versucht, das Thema allgemein zu lesen.Klarstellung des atomaren Speicherzugriffs für verschiedene Betriebssysteme
Lesen verwandte Fragen hier in SO, ich verstehe, gibt es verschiedene Möglichkeiten, diese Operationen abhängig von der OS zu tun. Interlocked * in Windows, OSAtomic * in MacOS und ich fand auch, dass Compiler eingebaute (intrinsische) Operationen dafür haben.
Nach dem Lesen gcc builtin atomic memory access, bin ich links fragen Was ist der Unterschied zwischen intrinsischen und OSAtomic * oder Interlocked * Einsen? Ich meine, kann ich nicht zwischen OSAtomic * oder gcc builtin wählen, wenn ich auf MacOS bin, wenn ich gcc benutze? Das Gleiche wäre, wenn ich mit gcc in Windows wäre.
Ich lese auch, dass auf Windows Interlocked * als Inline-und intrinsische Versionen kommen. Was ist bei der Wahl zwischen intrinsisch oder inline zu beachten?
Im Allgemeinen, gibt es mehrere Optionen auf OSs was zu verwenden? Oder ist das wieder "es kommt darauf an"? Wenn ja, wovon hängt es ab?
Danke!
Ich bin mir nicht ganz klar, was Sie meinen. Was bedeutet das für die GCC-Built-in-Funktionen? Können sie auf jedem OS sowie den spezifischen OSAtomic * und Interlocked * verwendet werden? – murrekatt
@murrekatt: Die GCC-Einbauten sind für POSIX-kompatible Betriebssysteme. Das beinhaltet oft MacOS. Windows ist kein POSIX-kompatibles Betriebssystem. Da die integrierten Funktionen jedoch auf die Hardware ausgerichtet sind, funktionieren sie möglicherweise unter Windows. Windows ist nicht standardisiert, daher hängt die Auswahl der Bibliotheken von Ihrem Zielbetriebssystem ab. –
@ S.Lott ich sehe. Dann nimm mein Beispiel, wo ich jetzt auf MacOS bin. Ich kann jetzt entweder OSAtomic * oder den Compiler builtins wählen, richtig? Wie wähle ich aus? Was ist zu beachten? – murrekatt