Was ist lock-free-Multithread-Programmierung?

Ich habe gesehen, Menschen/Artikel/SO-Beiträge, die sagen, Sie haben sich entwickelt, Ihre eigene "lock-free" container für Multithread-Nutzung. Vorausgesetzt, Sie haben nicht verwendet ein performance-schlagen modulus trick (D. H. jeder thread kann nur einfügen, basierend auf modulo) wie kann man Daten-Strukturen multi-threaded, aber auch lock-frei???

Diese Frage soll in Richtung C und C++.

  • lock-in der Regel kostenlos ist, bedeutet nicht "keine Sperre", es bedeutet so etwas wie transactional memory oder optimistisch-design, wo Sie nicht sperren, die für jeden Betrieb, aber einmal in eine Weile (für Rollback oder zu tun, Transaktion) - irgendeine Art von sperren benötigt werden.
  • Lock-freien in der Regel bedeutet, dass Sie verwenden, compare-and-swap-hardware-Operationen.
  • In einer etwas breiteren definition, die Sperre bezieht sich nicht auf die mutex-aber um das Potenzial von "einsperren" andere threads. Das offensichtlichste Beispiel ist nicht die Freigabe eines mutex, jedoch ist dies ein Beispiel für nicht-lock-freien code ohne die Verwendung eines mutex: while (X == 0) { X = 1 - X; } das Recht Gegeben scheduling von zwei threads können bleiben in dieser Schleife für immer. preshing.com/20120612/an-introduction-to-lock-free-programming
InformationsquelleAutor user997112 | 2012-12-23
Schreibe einen Kommentar