2016-04-21 5 views

Antwort

0
  1. Wenn Sie GCD verwenden, können die übertragenen Aufgaben nicht gestoppt werden.
  2. Wenn Sie jedoch versuchen, NSOperationQueue zu verwenden, können die Aufgaben gestoppt werden, die derzeit nicht ausgeführt werden.
  3. Wenn Sie NSThread oder Pthread verwenden, denke ich, dass es schwierig ist, sie ohne zusätzliche Anstrengungen zu stoppen.
+0

Ich habe nur mit NSThread getrennt. – Jeyanthu

+0

Dann denke ich, Sie sollten Logik wie while (wahr) {if (sollteEnde) {return;}} in der Thread-Funktion hinzufügen. Und die shootEnd-Variable sollte in etwas wie Mutex gelesen werden, um zwischen Multithreads zu schützen – user3349433

1

Ihr Hintergrund-Thread überprüfen muß, um zu sehen, ob es storniert wurde, entweder durch die isCancelled Methode ...

if ([[NSThread currentThread] isCancelled]) { 
    // do cleanup here 
    [NSThread exit]; 
} 

Sie können nicht den Faden von außen töten, weil es keine Möglichkeit gibt, zu wissen, In welchem ​​Zustand sich der Thread befinden könnte, und somit würde er töten, würde unbestimmtes Verhalten erzeugen.

Verwandte Themen