Obecnie programuję aplikację, która wyodrębnia klatki z klipu filmowego. Zaprojektowałem go tak, aby ekstrakcja odbywała się na oddzielnym wątku, aby zapobiec zamarznięciu aplikacji. Sam proces ekstrakcji zabiera wiele zasobów, ale działa dobrze, gdy jest wykorzystywany w symulatorze. Są jednak problemy z budową iPada. Kiedy wykonuję kolejną akcję (mówię odtwarzaczowi AV, żebym grał, podczas gdy wyodrębniam ramki), wątek niespodziewanie przestaje działać i uważam, że został zabity.Wątek jest zabijany przez OS
Zakładam, że to dlatego, że używam dużych zasobów, ale nie jestem do końca pewien.
Oto moje pytania: 1. Jak mogę sprawdzić, czy/dlaczego moja wątek się zatrzymuje? 2. Jeśli naprawdę chodzi o przerost przetwarzania, co powinienem zrobić? Naprawdę potrzebuję tej akcji do wdrożenia.
Herezje niektóre kod im przy: Aby utworzyć wątek:
[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];
wyślę wszelkich potrzebnych informacji, Dzięki tak dużo!
Aktualizacja Używam GCD teraz i zapełnia dla mnie wątki. Jednak system operacyjny nadal zabija wątki.
Wiem dokładnie, kiedy to się dzieje. kiedy mówię mojemu [gra AVPlayer]; zabija wątek.
Ten problem dzieje się tylko w rzeczywistym iPada, a nie na symulatorze
Jeśli musisz zapytać, spróbuj użyć abstrakcji wyższego poziomu, na przykład kolejek wysyłkowych (GCD) lub kolejek operacyjnych (NSOperationQueue).Zobacz [Przenoszenie z wątków] (http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid/TP40008091-CH100- SW8) do rozszerzonej dyskusji lub poszukaj przykładu [GCD] (http://stackoverflow.com/questions/7941860/#7941898) lub [NSOperationQueue] (http://stackoverflow.com/questions/830218/). To bardzo przydatne rzeczy. – Jano
powoduje awarię Twojej aplikacji? jeśli tak, co mówi raport o awarii? jesteś pewien, że AVPlayer jest bezpieczny dla wątków? ponieważ jeśli dzwonisz do [odtwarzania AVplayer] i uzyskujesz dostęp do niego w tym samym czasie w wątku tła, może to być problem. – JeanLuc
Czy twój wątek do ekstrakcji działa jako wątek tła? Uczę się Objective-C, ale jeśli jesteś w stanie uruchomić go jako wątek w tle, możesz pomóc nie zostać zabitym przez system operacyjny. –