Mutex als Klassenmitglied

8
%Vor%
  1. Wenn diese Klasse auf dem Heap ( temp* T = new temp() ) zugeordnet ist, ist dies threadsicher (für jede Instanz, nicht alle Instanzen zusammen)?

  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?

  3. Wenn Antwort auf 1 und 2 nein sind, wie kann ich jede Instanz threadsicher machen?

shd 10.05.2011, 08:10
quelle

3 Antworten

7

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.

    
Aater Suleman 10.05.2011, 08:18
quelle
2

Der Speicherort hat nichts mit etwas zu tun.

    
quelle
0

Ja, die Methode CriticalCode() ist in beiden Fällen Thread-sicher.

    
Juraj Blaho 10.05.2011 08:15
quelle

Tags und Links