Was bedeutet Thread-Serialisierung in C++?

Lesezeit: 2 Minuten

Pokches Benutzeravatar
pokche

Ich weiß, wie man Objekte serialisiert und wie sie auf der Festplatte gespeichert werden, aber was bedeutet Thread-Serialisierung eigentlich? Könnte mir bitte jemand dabei helfen und mich in die richtige Richtung weisen?

amdns Benutzeravatar
amdn

Sie haben Recht, dass dies zwei verschiedene Bedeutungen sind serialization. Sie kennen sich aus Datenserialisierung Das heißt, eine Datenstruktur in einen Bytestrom in einer kanonischen Darstellung umzuwandeln. Im Multithreading bedeutet der Begriff Serialisierung gegenseitiger Ausschluss für Thread- oder Prozesssynchronisierung Das bedeutet, dass jeweils nur ein Thread eine Datenstruktur bearbeiten darf. C++11 ermöglicht die Serialisierung zwischen Threads mithilfe von a std::mutex

#include <mutex>
std::mutex file_io_mutex;

{
    std::lock_guard<std::mutex> guard(file_io_mutex);
    std::out << "Only one thread at a time will execute this line." << std::endl;
}

Dies ist ein Beispiel dafür Ressourcenbeschaffung ist Initialisierung (RAII) Dabei wird die Ressource gleichzeitig erfasst und initialisiert und freigegeben, wenn sie den Gültigkeitsbereich verlässt (die Ausführung erreicht die schließende geschweifte Klammer). Dies ist eine gängige Redewendung, die sicherstellt, dass der Mutex auch dann freigegeben wird, wenn der Code eine Ausnahme auslöst, bevor er das Ende des Blocks erreicht.

  • WOW!! Das beantwortet meine Frage klar und deutlich. Du bist großartig, Amdn

    – Pochsche

    1. Februar 2013 um 21:09

  • Ich freue mich, dass Sie es hilfreich fanden!

    – Änderung

    1. Februar 2013 um 21:16 Uhr

Serialisieren bedeutet eigentlich, in serieller Form, also nacheinander, zu veröffentlichen. Thread-Serialisierung bedeutet also, sicherzustellen, dass eine bestimmte Reihe von Ereignissen in einer Reihenfolge und nicht gleichzeitig auftritt

Ein Heap mit serialisiertem Thread-Zugriff bedeutet also, dass Aufrufe des Heaps in der Reihenfolge erfolgen, in der sie erfolgen, und nicht gleichzeitig. Dies geschieht wahrscheinlich mittels einer globalen Sperre.

  • Das. Viele Compiler/CPUs optimieren Code, indem sie Anweisungen neu anordnen, um Verzögerungen zu verhindern, und L1-Caches sind häufig Thread-/Kern-spezifisch. Der serialisierte Zugriff auf den Speicher durch mehrere Threads bedeutet normalerweise, dass diese Optimierungen in bestimmten Szenarien verworfen werden, in denen die Reihenfolge, in der Threads auf den Speicher zugreifen, für die Wahrung der Datenintegrität entscheidend ist.

    – Darth Android

    1. Februar 2013 um 20:24


Benutzer-Avatar von karlphillip
karlphillip

Ohne den spezifischen Kontext zu kennen, in dem Ihnen dies gesagt wurde, vermute ich, dass es sich um die Entwicklung einer Single-Threaded-Anwendung handelt simuliert ein Multithread-System durch Verwendung einer Nachrichtenwarteschlange.

Das bringt mich zurück in die alten Zeiten, als ich a spielte CircleMUD Derivat. Das gesamte Spiel wurde in einem einzigen Thread implementiert, musste aber mit 50-100 Spielern zurechtkommen gleichzeitig. Ich war ziemlich erstaunt, wie sie das geschafft haben.

1451940cookie-checkWas bedeutet Thread-Serialisierung in C++?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy