2012-05-04 13 views
14

Dokumenty Apple mówią, że jeśli ustawisz właściwość maxConcurrentOperationCount dla NSOperationQueue na NSOperationQueueDefaultMaxConcurrentOperationCount (wartość domyślna), to dostosuje ona wartość w czasie wykonywania na podstawie "warunków systemowych".NSOperationQueueDefaultMaxConcurrentOperationCount in the wild

Jeśli podasz wartość NSOperationQueueDefaultMaxConcurrentOperationCount (który jest zalecane), maksymalna liczba operacji można zmieniać dynamicznie oparta na warunkach systemowych.

Czy każdy może zgłosić to, co widzą, że wartość jest ustawiona na naturze na różnych urządzeniach? Czy mówimy 1 lub 2 dla starych telefonów i 3-4 dla nowych modeli, czy 10 lub? Nie daje wglądu w ustalony zestaw możliwości ani najczęstszy wynik. Myślę, że programiści mogliby wiedzieć, czego się spodziewać w produkcji, a nie tylko zajmiemy się tym bez żadnego wyjaśnienia, z czym się optymalizują (szybkość reakcji UI, szybkość wykonywania operacji itp.).

Odpowiedz

6

Jak już wspomniano w wielu różnych odmianach i zasobach (for instance), nigdy nie wiadomo, ile wątków należy utworzyć dla przepływu pracy aplikacji.

Jest to kwestia czasu procesora i załadowania, ile wątków potrzebuje aplikacja (ponieważ nie jest ona sama w lesie). Więc odpowiedź brzmi:

  1. optymalizacja dla liczby rdzeni
  2. optymalizacja architektury procesora
  3. optymalizacja dla prądu obciążenia procesora
+1

NSOperationQueueDefaultMaxConcurrentOperationCount czasami pozwala kolejka do stworzenia jak wiele wątków, jak trudno w aplikacji na iOS, by nimi zarządzać. Otrzymuję SIGABRT ze względu na liczbę wątków uruchomionych podczas korzystania z NSOperationQueueDefaultMaxConcurrentOperationCount.NO pomysł, dlaczego tak wiele operacji są tworzone. –

+0

@devgr próbuje ustawić punkty przerwania i powodzenia w debugowaniu. Możesz szukać względnych pytań lub poprosić o pomoc w nowej, tylko dla twoich potrzeb. –