完成如何使backgroundthread不工作,直到另一個後臺線程被完成,如何使其啓動它的線程一旦第一backgroundthread被完成製作後臺線程等待,直到其他後臺線程獲取iphone
回答
使用標誌處理此類事件的類型,如下所示...
BOOL isYourthreadexecuting = NO;
- (void)beginThread {
isYourthreadexecuting = YES;
[self performSelectorInBackground:@selector(backgroundThread) withObject:nil];
}
- (void)backgroundThread {
[myClass performLongTask];
// Done!
isYourthreadexecuting = NO;
}
- (void)waitForThread {
if (! isYourthreadexecuting) {
// Thread completed
[self callyourmethod];
}
}
編輯>>加成根據使用評論
我建議你使用NSOperationQueue用於多線程。
希望,這將你...
現在我正在遵循以下過程在你的答案中提到,但問題是第二個後臺線程可能會開始任何時刻,它可能從其他類的方法也開始 – user1184202
看到我編輯的答案.. – Nit
@ user1184202如果你有你的答案,它會幫助你,然後標記它正確對其他人有幫助,對你也有幫助 – vishiphone
正如我在評論說,你可以使用GCD的串行調度隊列。這裏是一個示例代碼來演示:
- (IBAction)buttonSerialQ2Pressed:(id)sender
{
dispatch_queue_t serialdQueue;
serialdQueue = dispatch_queue_create("com.mydomain.testbed.serialQ2", NULL);
dispatch_async(serialdQueue, ^{
//your code here
[self method1];
});
dispatch_async(serialdQueue, ^{
//your code here
[self method2];
});
dispatch_async(serialdQueue, ^{
//your code here
[self method2];
});
dispatch_async(serialdQueue, ^{
//your code here
[self method3];
});
}
-(void)method1
{
for (int i=0; i<1000; i++)
{
NSLog(@"method1 i: %i", i);
}
}
-(void)method2
{
for (int i=0; i<10; i++)
{
NSLog(@"method2 i: %i", i);
}
}
-(void)method3
{
for (int i=0; i<100; i++)
{
NSLog(@"method3 i: %i", i);
}
}
- 1. 請等待後臺線程?
- 2. 好吧,從其他後臺線程啓動後臺線程? (NSObj)
- 3. 等待多個後臺線程
- 4. 如何讓EDT等待後臺線程?
- 5. UI線程如何等待直到後臺線程完成處理?
- 6. (iphone)pushViewController在後臺線程?
- 7. 主線程正在等待更新接口的後臺線程
- 8. 如何讓UI線程等待後臺線程完成?
- 9. 主線程在後臺線程執行時等待[NSManagedObjectContext(_NSInternalAdditions)lockObjectStore]
- 10. 後臺線程
- 11. 後臺線程
- 12. 前臺線程VS後臺線程
- 13. 從後臺線程在UI線程中編程創建UI並將其複製到後臺線程?
- 14. 後臺工作線程
- 15. ASP.NET後臺工作線程
- 16. C#等待其他線程
- 17. 我可以等待一個特定的後臺線程完成,然後另一個後臺線程啓動?
- 18. Android:後臺線程
- 19. KVO後臺線程
- 20. tomcat後臺線程
- 21. Java後臺線程
- 22. 從後臺線程
- 23. iPhone SDK後臺線程調用其他方法
- 24. NSFetchedResultsController:在後臺線程中獲取
- 25. 從ALAssetRepresentation獲取fullScreenImage在後臺線程
- 26. 當後臺線程完成其工作時獲取響應
- 27. 從後臺處理程序線程傳遞處理程序到後臺線程
- 28. 強制SKPaymentQueue到在後臺線程
- 29. 後臺線程和連接將使線程爲前臺線程
- 30. 主線程是前臺線程還是後臺線程?
kindle請幫助我,如果你知道答案 – user1184202
我已經寫了一些代碼使用它。對於更多的幫助,你應該在這裏顯示一些代碼,所以我可以理解場景...享受.. – Nit
可能需要使用串行調度隊列。 https://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1 – user523234