Bazı kodlarla çalışıyorum, NSOperation
s içinde yeni olduğum çalışma döngülerine rastlıyorum.NSOperasyonda NSThread uyku kullanma
NSOperation
s veri yüklenirken meşgul - ve meşgul olduklarında, indirme işlemlerinin tamamlanmasını beklemek için NSRunLoop
s ve iş parçacığı uyku biçiminde bir kod var. Ben koşmak döngüler hakkında okudum
while (aCertainConditionIsTrue && [self isCancelled]==NO) {
if(![[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]){
[NSThread sleepForTimeInterval:1.0];
}
}
ve runMode:beforeDate:
bir giriş kaynağı veya zaman aşımını bekler:
özellikle bu kod bana ilgi olduğunu. Her ne kadar% 100'lük olmasa da, bir girdi sosu olarak sayılır.
Bunun ilk çalıştırmasında, her zaman NO değerini döndürür ve sleepForTimeInterval:
değerini gösterir. Bu kötü mü?
Belirli bir yardımcı program sınıfında, her bir iş parçacığı için sleepForTimeInterval:
numarasına çok fazla isabet ediyor; bu da performansı önemli ölçüde azaltıyor.
Bunun için daha iyi çözümler veya tavsiye?