In den meisten Code, den ich geschrieben habe oder überprüft, Verriegelung wird über Zusammensetzung erreicht, wo eine Klasse besitzt einen kritischen Abschnitt oder Mutex:Locking durch Vererbung statt Zusammensetzung
class MyClass
{
Mutex mMutex;
};
und wenn wandelbar Mitglieder können potenziell sein über mehrere Threads zugegriffen wird, wir das Schloss über RAII wie diese erwerben und freigeben:
void MyClass::Method()
{
Lock lock(mMutex);
// ...
}
Heute habe ich einige Code überprüft, wo der Code Verriegelung über Vererbung wurde Umsetzung wie folgt aus:
class MyClass : public Mutex
{
// ...
};
Und Verriegelung wird durch die Klasse locking "selbst" ausgeführt:
void MyClass::Method()
{
Lock lock(this);
// ...
}
es irgendwelche Vorteile oder Nachteile dieses Ansatzes? Oder ist das nur ein Stilproblem?
müssen Sie speziell auf den 'geerbten Mutex' Teil spezifischer sein. Wurde es von einer Schnittstelle oder einem echten Synchronisationsobjekt geerbt? – YeenFei
@YeenFei - es wurde von einem realen (d.h. konkreten) Synchronisationsobjekt geerbt. – LeopardSkinPillBoxHat