Skip to main content

Posts

Showing posts with the label MethodImpl

How to lock a method - synchronized

Nu odată mi s-a întîmplat sa am nevoie sa sincronizez una sau mai multe metode din aceiași clasa. In funcție de situație foloseam un cod asemănător cu cel de mai jos: class ItemsStore { void AddItem(Item item) { lock(this) { ... } } void RemoveItem(Item item) { lock(this) { ... } } Item[] GetAvailableItemes() { lock(this) { ... } } } Sunt cazuri când lock-ul se face pe un field sau pe un obiect diferit de this dintr-o alta clasa. Unu din dezavantaje care apare în acest caz este apariția a unui nou nivel de indentare. Am descoperit un alt mecanism prin care se poate face lock automat pe metodele dorite. Deși exista din .NET 1.1 și cea mai mare parte din voi l-ați folosit deja, am considerat ca merita amintit. Prin intermediul atributului MethodImpl putem specifica modul în care sa se facă lock-ul pentru fiecare metoda în parte( nu mai este nevoie sa folosim lock s...