Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Hallo allerseits,
bin gerade etwas Verwirrt was die "atomic"-Funktionen im C++-Standard angeht. Unter Windows gibt es ja die entsprechenden Macros, allerdings scheinen diese sich komplett anders zu verhalten als ich erwarte:
Wenn ich nun aber klassisch von first bis null gehe, dann bekomme ich für den "atomic"-Header aber totalen Müll. Ist das normal oder ist da etwas mit meiner Installation kaputt?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Schwierig, sieht auf den ersten Blick richtig aus. Kannst du details zum "kompletten Müll" geben? Gibt es korrelationen zu bisherigen Werten von last? Kannst du mal ein kurzes, vollständiges Beispiel posten, sodass wir das mal lokal testen können?
viele Grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Mhh dann liegt es wohl vermutlich daran das ich den Typen falsch benutze oder so? Mhh keine Ahnung, anbei einmal ein paar einfach Listen mit beiden Versionen:
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
In enqueue ist dein "nil" static. compare_exchange_strong überschreibt sein erstes Argument ("expected") mit dem tatsächlichen Wert, wenn der Vergleich fehlschlägt. Durch static überlebt dieser Wert die Funktionsaufrufe und dann tut "nil" nicht mehr das, was du willst. Einfach das static wegräumen.
viele Grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich kann dir nur empfehlen die Atomic API von Windows, GCC zu nutzen, statt die vom c++ Standard. Der Standard nutzt intern oft die System API und wenn mal wer optimiert hat dann sind es sehr umfangreiche Codefetzen, mit unzähligen Checks(macht es wieder lahm), die low level gehen.
Wenn du die wegen Performance nutzt, dann eher keine Standard C/C++ Bibliothek verwenden. Die Idee von STL ist z.B. auch nicht Performance oder wenig Code zu schreiben, sondern flexibilität und somit komplexe Aufgaben schnell zu programmieren. Bei youtube gibt es ein Video zu Optimierung von C++ in Spielen, auf einer C++ Konferenz. Die STL und C++ Standard Designer und Entwickler hätten ihn gerne durch den raum geschleift, als er erklärte wie unglaublich mies der Code Performt und wieviel Resourcen die fressen, im vergleich zu optimierten Algorithmen. Er hatte schlicht nicht gewusst, das dieser Code nicht sein Anwendungsziel abdeckt und haben diverse Beispiele gebracht wo es eigentlich eingesetzt wird.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Ja hatten wir tatsächlich auch im Prototypen über die plattformspezifischen Sachen gearbeitet. Nur haben wir dann festgestellt das viele Zielsysteme garnicht erst Multithreading unterstützen. Von daher wollte ich da jetzt nur 1 IFDEF lassen. Performance ist auf so alten Kisten ja auch egal, da es immer langsam bleiben wird lol
Registriert: Do Jan 28, 2016 09:42 Beiträge: 7
Programmiersprache: Delphi, C++
TAK2004 hat geschrieben:
Ich kann dir nur empfehlen die Atomic API von Windows, GCC zu nutzen, statt die vom c++ Standard. Der Standard nutzt intern oft die System API und wenn mal wer optimiert hat dann sind es sehr umfangreiche Codefetzen, mit unzähligen Checks(macht es wieder lahm), die low level gehen.
Wenn du die wegen Performance nutzt, dann eher keine Standard C/C++ Bibliothek verwenden. Die Idee von STL ist z.B. auch nicht Performance oder wenig Code zu schreiben, sondern flexibilität und somit komplexe Aufgaben schnell zu programmieren. Bei youtube gibt es ein Video zu Optimierung von C++ in Spielen, auf einer C++ Konferenz. Die STL und C++ Standard Designer und Entwickler hätten ihn gerne durch den raum geschleift, als er erklärte wie unglaublich mies der Code Performt und wieviel Resourcen die fressen, im vergleich zu optimierten Algorithmen. Er hatte schlicht nicht gewusst, das dieser Code nicht sein Anwendungsziel abdeckt und haben diverse Beispiele gebracht wo es eigentlich eingesetzt wird.
Hast du mal einen Link zu dem Video? :0 Klar man muss auf jeden Fall wissen was das Ziel grade ist.
_________________ Give a man a program, frustrate him for a day. Teach a man to program, frustrate him for a lifetime. - Waseem Latif
Registriert: Do Jan 28, 2016 09:42 Beiträge: 7
Programmiersprache: Delphi, C++
TAK2004 hat geschrieben:
Zum glück wusste ich noch, dass es von einer cppcon war und konnte das Video recht schnell finden, weil ich mich an das Hawaihemd erinnert hab
Unabhängig, dass er STL missverstanden hat ist der vortrag unglaublich informative und nützlich.
Das Puzzle Hemd hat aber auch was Mit dem roten Hawaiihemd würde er sich irgendwie auch gut als Anbieter von Familienurlauben eignen Vielleicht könnte er sich eine family domain sichern (sowas hier meine ich) und das als Nebengewerbe machen. Den Vortrag muss ich mir nachher mal komplett anhören, danke! Der Anfang klingt auf jeden Fall schon mal gut
_________________ Give a man a program, frustrate him for a day. Teach a man to program, frustrate him for a lifetime. - Waseem Latif
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.