Wie zu warten, in NSThread, bis ein Ereignis auftreten, in iOS?
Wie zu warten, innerhalb der NSThread, bis ein Ereignis auftreten, in iOS?
eg, haben Wir ein NSThread und begann eine thread-Schleife. Innerhalb der thread-Schleife, es ist Bedingung, um zu überprüfen, ob die message queue keine Nachrichten. Wenn es eine Botschaft, ruft dann die entsprechende Methode zu tun, einige in Betrieb, aber es sollte warten, bis der message queue wird aufgefüllt mit einer neuen Nachricht.
Gibt es eine API oder Methoden zur Verfügung, um zu warten, bis irgendein Ereignis Eintritt?
For Example
NSThread *thread = [NSThread alloc]....@selector(threadLoop)
- (void)threadLoop
{
//Expecting some API or method that wait until some messages pushed into the message queue
if (...) {
}
}
Jede Hilfe, die sollte geschätzt werden.
InformationsquelleAutor Bharath | 2013-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie NSCondition.
Ich befestige Beispiel code "ready-for-test" in einem ViewController
ausgezeichnete gutes Beispiel
InformationsquelleAutor LombaX
Könnten Sie run loop Quellen. Im wesentlichen:
1) Auf sekundären worker-thread erstellen und zu installieren, führen Sie loop-Quelle, und übergeben Sie es irgendwie, zusammen mit worker-thread ausführen, Schleife Referenz, um andere verwalten von thread, die werden das senden von Nachrichten an diese:
Hier gibt es benutzerdefinierte Routinen bereits erwähnt - Sie sind verantwortlich bieten Ihnen:
2) Auf den worker-thread starten üblichen Schlinge, etwas ähnliches wie das hier:
3) Nun auf die Verwaltung von thread-könnte man das signal (Nachricht senden), um die zuvor erhaltenen Schlinge Quelle, wenn nötig (und aufwachen, die Schlinge dieser thread, falls es eingeschlafen ist):
Mehr details gibt es im Apple guide.
InformationsquelleAutor Granfalloner
Können Sie verwenden einen semaphor. Siehe das Beispiel unten, die Logik ist ziemlich einfach. Im meinem Beispiel, die Blöcke werden im hintergrund ausgeführt, und mein Haupt-thread wartet für den Versand-signal für die semaphore zu gehen. Der wesentliche Unterschied ist in meinem Fall der thread wartet der Haupt-thread, aber das semaphor Logik ist hier, glaube ich, können Sie leicht anpassen, um Ihren Fall.
InformationsquelleAutor Lucas Eduardo