如何在完成其他NSThread后启动NSThread?

时间:2011-09-11 11:59:15

标签: objective-c macos cocoa

我有几个主题。我想运行它们,确保它们一个接一个地执行。 [run thread1]; [run thread2]; 当我这样做时,thread2正在运行而不等待thread1完成。我需要这个,因为我需要来自线程1的值,以便在线程2上使用。

1 个答案:

答案 0 :(得分:1)

如果你真的需要线程,无论出于何种原因,你都可以这样做。

- (void)startThreadOne
{
    [NSThread detachNewThreadSelector:@selector(executeThreadOne) toTarget:self withObject:nil];
}

- (void)executeThreadOne
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    // calculate the value
    [self performSelectorOnMainThread:@selector(threadOneDidFinish) withObject:nil waitUntilDone:NO];
    [pool release];
}

- (void)threadOneDidFinish
{
    [NSThread detachNewThreadSelector:@selector(executeThreadTwo) toTarget:self withObject:nil];
}

然而,这种方式可能被认为是老式的。应尽可能使用串行调度队列。 Concurrency Programming Guide.