Multi Thread NSThread GCD dispatch_get_main_queue() dispatch_get_global_queue dispatch_queue_create dispatch_semaphore_create dispatch_semaphore_signal dispatch_semaphore_wait dispatch_after dispatch_once NSOperationQueue