2011-02-01 8 views
8

Ben döngü gövdesinde ben döngü tekrar dolmadan bitirmek gerekiyor başka bir iş parçacığı oluşturma çünküNSLock - kilitli bir kilidi kilitlerken sadece kilitlemeli mi?

[lock lock]; 

ile başlayan bir döngü var. (Diğer iş parçacığı bittiğinde kilidini açar).

Ancak aşağıdaki hatayı alıyorum ikinci döngü:

2011-02-02 07:15:05.032 BLA[21915:a0f] *** -[NSLock lock]: deadlock (<NSLock: 0x100401f30> '(null)') 
2011-02-02 07:15:05.032 BLA[21915:a0f] *** Break on _NSLockError() to debug. 

"kilit" belgelerine aşağıda belirtilmiştir: Beni sadece engelleyecek düşündürüyor

Abstract: Attempts to acquire a lock, blocking a thread’s execution until the lock can be acquired. (required)

kilit olabilir kadar kazanılmış olmak

cevap

8

iki sorunlara benziyor:

  • desteklenmez bir iş parçacığı ve başka kilidin bir kilit kilitleme - muhtemelen NSCondition istiyorum. Ana iş parçacığındaki NSCondition bekleyin ve alt iş parçacığına bildirin.
  • Zaten kilitliyken normal NSLock kilitlenemez. NSRecursiveLock'un anlamı şudur.
3

İşiniz bittiğinde -unlock göndermeyi mi unuttunuz? -lock numaralı her aramanın -unlock numaralı aramayla eşleştirilmesi gerekir.

+0

Kesinlikle yaptım :-) – Nippysaurus

İlgili konular