.
() .
.
dispatch_semaphore_create (0) ,
SL- GCD, , , : 500 . .
.
...
.
, , , .
, dispatch_async()
dispatch_semaphore_wait()
__block NSArray* lessSorted = nil;
dispatch_semaphore_t lessSem = dispatch_semaphore_create(0);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
lessSorted = [QuickSort sort:less useGCD:useGCD];
[lessSorted retain];
dispatch_semaphore_signal(lessSem);
});
__block NSArray* moreSorted = nil;
dispatch_semaphore_t moreSem = dispatch_semaphore_create(0);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
moreSorted = [QuickSort sort:more useGCD:useGCD];
[moreSorted retain];
dispatch_semaphore_signal(moreSem);
});
dispatch_semaphore_wait(lessSem, DISPATCH_TIME_FOREVER);
dispatch_semaphore_wait(moreSem, DISPATCH_TIME_FOREVER);
[concat addObjectsFromArray:lessSorted];
[concat addObject:pivotObj];
[concat addObjectsFromArray:moreSorted];
dispatch_release(lessSem);
dispatch_release(moreSem);
[lessSorted release];
[less release];
[moreSorted release];
[more release];