Performance in Threads



  • Hallo,
    wenn ich in C++ 8 Threads erstelle und das Programm dann auf einem Prozessor mit 4 Kernen laufen lasse, ist dann die Performance schlechter als wenn man nur 4 Threads erstellt und die auf dem 4 Kerner laufen lässt?

    LG



  • Das kommt drauf an.



  • audacia schrieb:

    Das kommt drauf an.

    Exakt



  • Worauf kommt es genau an?
    Auf den Prozessor oder was in denn Threads die erstellt werden gemacht wird?



  • Also wenn du z.B. einen Hyperthreading Prozessor mit 4 Cores hast und dies auch nutzt, dann werden dir auch 8 Threads viel bringen.

    Sag was du vorhast, dann sagen wir dir, ob das geht oder sogar wie es geht.



  • Also ich möchte ein Spiel programmieren und die Aufgaben auf mehrere Kerne verteilen. Denn natürlich möchte ich das es auf verschiedenen CPUs gut läuft, wie z.B. auf meinem i3-4150. Programmiert wird mit C++11, OpenGL und Qt (für die Darstellung).

    In einem Thread soll z.B. zufällig ein Tier generiert werden, während ein anderes Thread dafür da ist z.B. das die Sonne sich bewegt. Deshalb die Frage ob es schlecht ist 8 Threads auf einem Prozessor mit 4 Threads laufen zulassen.

    Oder macht es eher Sinn das Spiel so zu optimieren das es je nach Anzahl der Threads die der Prozessor hat mehr oder halt weniger Aufgaben auf ein Thread packt?

    LG



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • In der Art wie du die Frage stellst, habe ich den Eindruck als ob du bisher nicht wirklich viel Programmiererfahrung hast. Liege ich damit richtig?



  • TimberDown schrieb:

    In einem Thread soll z.B. zufällig ein Tier generiert werden, während ein anderes Thread dafür da ist z.B. das die Sonne sich bewegt. Deshalb die Frage ob es schlecht ist 8 Threads auf einem Prozessor mit 4 Threads laufen zulassen.

    In Spielen gestaltet sich die Synchronisierung zwischen Threads meist so schwierig, dass man sich bemüht, die Logik in einem einzigen Thread unterzubringen. Mehrere Threads verwendet man erst dann, wenn einer die anfallenden Aufgaben nicht mehr alleine bewältigen kann und selbst dann lagert man meist nur einzelne teure Operationen aus, z.B. die Pfadsuche.

    Ein Thread pro agierendem Objekt ist jedenfalls eine Sackgasse. Wenn du 1000 sich bewegende Objekte hast, kannst du nicht einfach 1000 Threads dafür starten.


Anmelden zum Antworten