Как запустить NSThread после завершения других NSThread? - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть пара тем.Я хочу запустить их, убедившись, что они выполняются один за другим.[запустить поток 1];[запустить thread2];Когда я это делаю, thread2 работает, не ожидая завершения thread1.Мне нужно это, потому что мне нужно значение из потока 1, чтобы использовать в потоке 2.

1 Ответ

1 голос
/ 11 сентября 2011

Если вам действительно нужны потоки, по любой причине, вы можете сделать это следующим образом.

- (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];
}

Однако этот способ можно считать старомодным. Последовательные очереди отправки должны использоваться, когда это возможно. Руководство по программированию параллелизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...