Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
25. Jul 2023
Ja, so lange es gleich schnell ist, ist alles OK. (sind ja auch alle Threads an den selben Kern gebunden :lol:)
Schlimm wäre es nur, wenn es bei mehr Threads viel langsamer würde. (ein Bissl ist klar, durch die Overhad der Threadverwaltung)
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
24. Jul 2023
Wie läuft es mit den Zeiten, wenn SetThreadAffinityMask(GetCurrentThread {oder Self.Handle}, $00000001); als Erstes im Execute, mit originalem Random.
Gilt nur, wenn du maximal 64 Kerne hast, sonst fängt man eventuell auch noch mit Prozessorgruppen an.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
24. Jul 2023
Inzwischen kann man in Delphi ein eigenes Random registrieren.
Dort könnte man Eines mit TheadVar bauen. (und wenn noch RandSeed=0, dann darin zuerst noch ein Randomize)
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
24. Jul 2023
Wenn es eine globale Variable ist, dann streiten sich die Kerne darum.
Aber mir war so, als wären es Threadvars ...
Bin erschreckt, aber ErrorAddr und RandSeed sind wirklich var anstatt threadvar :shock:
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
24. Jul 2023
Mir war so, als sei der Zufallsgenerator je Thread unabhängig,
aber wenn es nur einen Globalen gäbe, dann wäre die Sache klar.
* in aufgerufenen Funktionen kann eine Synchronisierung drin sein
* und dann die Speicherzugriffe ... wenn alle Kerne auf den selben Speicher zugreifen, dann blocken viele CPUs hier auch gern