in diesem Code:
%Vor% ist die x
global für alle Threads oder lokal in jedem Thread? Oder hängt das von einem Compiler-Flag und / oder dem Compiler ab, so dass ich nicht wirklich wissen kann, was es aus dem Code ist?
Mehrere Fragen (alle unabhängig von Compiler und Compilerflags und OS):
Ich nehme an, dass dies nicht in C ++ selbst ist. (Ist es in C ++ 0x?) Irgendeine Boost-Lib, die das kann?
x ist global für alle Threads. Immer, unabhängig vom Compiler und / oder seinen Flags. Unabhängig davon, ob dies in C ++ 11 oder C ++ 03 ist. Wenn Sie also eine reguläre globale oder statische lokale Variable deklarieren, wird diese zwischen allen Threads geteilt.
In C ++ 11 haben wir das Schlüsselwort thread_local
. Bis dahin können Sie thread_specific_ptr von Boost.Thread verwenden.
Schnelle Teilantworten;
(Ist es in C ++ 0x?)
Ja. Aber hängt auch von der C ++ 0x-Unterstützung Ihres Compilers ab.
Irgendeine Boost-Lib, die das kann?
Boost.Threads . Siehe lokalen Speicher fädeln ein.
- Wie kann ich eine statische Variable erstellen, die für alle global ist? Threads?
- Wie kann ich eine statische Variable erstellen, die für jede lokal ist? Thread?
- Wie kann ich eine globale Variable erstellen, die für alle global ist? Threads?
- Wie kann ich eine globale Variable erstellen, die für jede lokal ist? Thread?
Beachten Sie, dass sich "statisch" normalerweise auf "Dauer" und "global" auf "Umfang" bezieht.
C ++ 0x-Thread-Konstruktoren sind variadisch: Sie können eine beliebige Anzahl (und einen Typ) von Argumenten übergeben. Alle diese sind für Ihr std::thread
-Objekt verfügbar.
Sie müssten eine Art plattformübergreifende Threading-Bibliothek verwenden (da Sie die Betriebssystemunabhängigkeit erwähnt haben), aber pthreads können Sie verwenden.
%Vor%Ich bin sicher, dass der Code Fehler enthält und als Pseudocode behandelt werden sollte, da ich ein Pseudo-Programmierer bin, wenn es um C ++ geht. :)
Tags und Links c++ multithreading variables static