Lets sagen, dass ich diese Funktion haben, die mehrere Threads müssen in einer Art GleichschrittAlternative Barriere gegen Spinlock?
std::atomic<bool> go = false;
void func() {
while (!go.load()) {} //sync barrier
...
}
Ich möchte loszuwerden, die spinlock und ersetzen Sie es für etwas Mutex Basis laufen, da ich viele Threads zu tun Alle Arten von Sachen und Spinlocking von einem Dutzend Threads ist katastrophal für den Gesamtdurchsatz, es läuft viel schneller, wenn ich zum Beispiel Sleep (1) innerhalb des Spinlocks einschließe.
Also gibt es etwas in STL, das in HLSL zum Beispiel AllMemoryBarrierWithGroupSync() ähnlich wäre? Im Grunde würde es jeden Faden an der Schranke schlafen lassen, bis alle ihn erreicht haben.
Für was es wert ist, 'while (! Go.load())' kann geschrieben werden, während (! Go) '. –