Effiziente Synchronisation von Threads

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Horus
Beiträge: 12
Registriert: 14.05.2014, 12:50
Kontaktdaten:

Re: Effiziente Synchronisation von Threads

Beitrag von Horus »

Hey,

schön, dass euch die Videos gefallen.
Dabei ist alles noch in einem sehr frühen Stadium.
Die grundlegenden Funktionen der Engine wollen solide implementiert sein!
Designentscheidungen treffe ich oft aufgrund von Benchmarking. Datenorientierung hat Objektorientierung abgelöst. Das alles braucht seine Zeit.
Die Grafik ist noch im Rohzustand.

Bzgl. volatile und Umordnung durch den Compiler könnte es bei mir womöglich hässliche Fehler geben, wenn ich nicht den Visual C++ Compiler nehme. Da gucke ich mal mit mehr atomics. Das war mir neu. :idea:




Es geht ja um die "Effiziente Synchronisation von Threads"
Eine weitere Erfahrung, bzw eine weitere Methode, welche soeben die Effizienz der Synchonisation steigert.
Verglichen habe ich die auf eine Sekunde gemittelte Maximale Update-Frequenz in der Zielanwendung.

Die Threads (Ich lasse es mit 2 Threads pro Core laufen) holen sich jeweils ein Paket von Items ab, welches sie dann abarbeiten.
Die Größe der Pakete ist nun Flexibel. Erst große Pakete, zum Ende kleinere. Vorher war die Größe statisch.
Ich will so erreichen, dass alle Threads möglichst gleichzeitig fertig sind und wenig Brüche in der Cache-Line auftreten.
Und es funktioniert. Eine kleine Funktion mehr, welche die Leistung um ~3% anschiebt. Für den geringen Aufwand ganz nett.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Effiziente Synchronisation von Threads

Beitrag von Aramis »

Ich sehe gerade nicht, dass das allen Compilern vorgeschrieben wäre.
Du hast natuerlich recht, ich hab es verwechselt. Demzufolge funktioniert es mit VC standardmaessig auf allen Plattformen ausser ARM.
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Effiziente Synchronisation von Threads

Beitrag von dot »

Es funktioniert mit VC auf x86, es ist aber dennoch falsches C++.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Effiziente Synchronisation von Threads

Beitrag von Krishty »

Ist es nicht eher undefiniertes und nicht portables C++?

90 % der WinAPI ist in C++ undefiniert (flacher Adressraum, Zweierkomplement, blabla), aber deswegen ist das C++ nicht „falsch“.

Nirgendwo steht, dass das Programm ill-formed wäre, weil es aus der Variable liest.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Effiziente Synchronisation von Threads

Beitrag von dot »

Ja gut, es ist undefiniert. Ich würde jedenfalls Abstand von Code nehmen, der nur mit einem ganz konkreten Compiler eines gewissen Herstellers und selbst dann nur auf einer ganz bestimmten Architektur funktioniert, wenn ich das selbe auch mit Standard C++ erreichen könnte...
Antworten