Wenn diese Klasse auf dem Heap ( temp* T = new temp()
) zugeordnet ist, ist dies threadsicher (für jede Instanz, nicht alle Instanzen zusammen)?
Wenn ich boost::mutex mx
- & gt; boost::mutex* mx
, und es im Konstruktor zuweisen, damit es auf dem Heap zugeordnet wird, wird der Code auch threadsicher sein?
Wenn Antwort auf 1 und 2 nein sind, wie kann ich jede Instanz threadsicher machen?
1) Wenn diese Klasse auf dem Heap zugeordnet ist (temp * T = new temp ()), ist dies threadsicher (für jede Instanz nicht alle Instanzen zusammen?
)Ja. Da mx kein statisches Mitglied der Klasse ist, gibt es eine Sperre pro Instanz der Klasse.
2) wenn ich boost :: mutex mx - & gt; boost :: mutex * mx und es im Konstruktor zuweisen, damit es auf dem Heap zugeordnet wird, wird der Code auch threadsicher sein?
Ja. Aber threadsicher nur pro Instanz.
3) Wenn die Antworten jetzt auf 1 und 2 stehen, wie kann ich jede Instanz für sicher halten?
Die Antworten sind ja, also geht es Ihnen gut.
Falls sich jemand anders fragt, wie man alle Instanzen mit einer Sperre sicher machen kann - Sie können mx zu einer statischen Variablen der Klasse machen.
Ja, die Methode CriticalCode()
ist in beiden Fällen Thread-sicher.
Tags und Links c++ multithreading boost mutex