NSLock - sollte beim Sperren einer gesperrten Sperre nur blockieren?

8

Ich habe eine Schleife, die mit einem

beginnt %Vor%

weil ich im Körper der Schleife einen anderen Thread erstelle, der beendet werden muss, bevor die Schleife wieder läuft. (Der andere Thread wird es nach dem Beenden entsperren).

Aber in der zweiten Schleife bekomme ich den folgenden Fehler:

%Vor%

In der Dokumentation zu "Sperren" steht Folgendes:

  

Zusammenfassung: Versucht, eine Sperre zu erhalten, die Ausführung eines Threads blockiert, bis die Sperre erworben werden kann. (erforderlich)

was bringt mich dazu zu denken, dass es nur blockieren würde, bis das Schloss erworben werden könnte?

    
Nippysaurus 01.02.2011, 21:28
quelle

2 Antworten

8

Klingt nach zwei Problemen:

  • Das Sperren einer Sperre für einen Thread und das Entsperren für einen anderen Thread wird nicht unterstützt. Wahrscheinlich möchten Sie NSCondition . Warten Sie auf das NSCondition im übergeordneten Thread und signalisieren Sie es im untergeordneten Thread.
  • Ein normaler NSLock kann nicht gesperrt werden, solange er bereits gesperrt ist. Dafür steht NSRecursiveLock .
Jens Ayton 01.02.2011, 21:51
quelle
3

Haben Sie daran gedacht, -unlock zu senden, als Sie fertig waren? Jeder Aufruf von -lock muss mit einem Aufruf von -unlock gepaart werden.

    
Jonathan Grynspan 01.02.2011 21:54
quelle

Tags und Links