by Guest » 08 Feb 2025, 16:49
Herb Sutter zeigt in seinem "Atomic Weapons" -Ver Vortrag mehrere Beispielanwendungen von Atomik, und einer von ihnen läuft darauf hinaus: (Videolink, Zeitstempel) < /p>
< Br /> [*] Ein Hauptfaden startet mehrere Arbeiter -Threads. Br />
Code: Select all
while (!stop.load(std::memory_order_relaxed))
{
// Do stuff.
}
Der Haupt -Thread stoppt schließlich stop = true; (Hinweis, mit order = order =
) und schließt sich dann den Arbeitern an.
ist in Ordnung, denn wen interessiert es, ob der Thread mit einer etwas größeren Verzögerung stoppt. Code>? Die Folie besagt, dass es absichtlich nicht entspannt ist , aber nicht erklärt warum . Verzögerung. < /p>
Ist es ein Kompromiss zwischen der Leistung und wie schnell andere Threads das Flag sehen? D.h. Da der Haupt -Thread das Flag nur einmal festlegt, können wir genauso gut die stärkste Bestellung verwenden, um die Nachricht so schnell wie möglich zu vermitteln?
Herb Sutter zeigt in seinem "Atomic Weapons" -Ver Vortrag mehrere Beispielanwendungen von Atomik, und einer von ihnen läuft darauf hinaus: (Videolink, Zeitstempel) < /p>
< Br /> [*] Ein Hauptfaden startet mehrere Arbeiter -Threads. Br />
[code]while (!stop.load(std::memory_order_relaxed))
{
// Do stuff.
}
[/code]
Der Haupt -Thread stoppt schließlich stop = true; (Hinweis, mit order = order =[code]seq_cst[/code]) und schließt sich dann den Arbeitern an.[code]relaxed[/code] ist in Ordnung, denn wen interessiert es, ob der Thread mit einer etwas größeren Verzögerung stoppt. Code>? Die Folie besagt, dass es absichtlich nicht entspannt ist , aber nicht erklärt warum . Verzögerung. < /p>
Ist es ein Kompromiss zwischen der Leistung und wie schnell andere Threads das Flag sehen? D.h. Da der Haupt -Thread das Flag nur einmal festlegt, können wir genauso gut die stärkste Bestellung verwenden, um die Nachricht so schnell wie möglich zu vermitteln?