Зачем использовать асинхронный HTTP-запрос поверх синхронизации HTTP в отдельном потоке?

Я знаю о разнице между тем, как каждый из них работает, но я хочу знать с точки зрения производительности (ресурсы внутри iphone ).

Допустим, я отправляю асинхронный запрос и жду вызова делегата. Это не заблокирует мой поток выполнения. Но в чем разница между этим и простой отправкой запроса на синхронизацию в другом потоке с помощью GCD.

Вот так:

dispatch_queue_t findPicsQueue;

findPicsQueue = dispatch_queue_create("FindPicsQueue", NULL);


dispatch_async(findPicsQueue, ^{

    NSData *theResponse = [NSURLConnection sendSynchronousRequest:theRequest
                                                        returningResponse:&response
                                                                    error:&error];

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;

    if (error) {
       NSLog(@"Error: %@",error)
    }

    if (httpResponse.statusCode == 200) 
    {
        [self parseXMLFile:theResponse]; // Parses Data and modifies picturesFound

        for (PictureData *tmp in picturesFound) {
            NSLog(@"%@",tmp);
        }          
    }  
}

Он не заблокирует мой интерфейс, поскольку он не выполняется в основном потоке, но заблокирует этот конкретный поток. И я также думаю, что GCD запускает очереди одновременно.

Заранее спасибо. Очень хочу прояснить этот вопрос.

8
задан Rob 10 August 2012 в 06:09
поделиться