Udostępnij za pośrednictwem


SpinLock.Enter(Boolean) Metoda

Definicja

Uzyskuje blokadę w niezawodny sposób, dzięki czemu nawet w przypadku wystąpienia wyjątku w wywołaniu metody można niezawodnie zbadać, lockTaken czy blokada została przejęta.

public:
 void Enter(bool % lockTaken);
public void Enter (ref bool lockTaken);
member this.Enter : bool -> unit
Public Sub Enter (ByRef lockTaken As Boolean)

Parametry

lockTaken
Boolean

Prawda, jeśli blokada zostanie uzyskana; w przeciwnym razie, fałsz. lockTaken przed wywołaniem tej metody należy zainicjować wartość false.

Wyjątki

Argument lockTaken musi zostać zainicjowany na wartość false przed wywołaniem klawisza Enter.

Śledzenie własności wątku jest włączone, a bieżący wątek już nabył tę blokadę.

Uwagi

SpinLock jest blokadą niewzględniową, co oznacza, że jeśli wątek zawiera blokadę, nie może ponownie wprowadzić blokady. Jeśli śledzenie własności wątku jest włączone (czy jest włączone za pośrednictwem IsThreadOwnerTrackingEnabled), wyjątek zostanie zgłoszony, gdy wątek próbuje ponownie wprowadzić blokadę, która już zawiera. Jednak jeśli śledzenie własności wątku jest wyłączone, próba wprowadzenia blokady już wstrzymana spowoduje zakleszczenie.

Jeśli wywołasz wywołanie Exit bez uprzedniego wywołania Enter stanu wewnętrznego, SpinLock może zostać uszkodzone.

Dotyczy

Zobacz też