/*多线程/
/**这三种是从底层到高层,越底层封装起来越复杂,越高层使用越简单,也是苹果官方月推荐使用的。
1.NSThread
2.NSOperationQueue
3.GCD!!!!!!!!!!!!!!!
*/
/*多线程GCD以dispatch开头/
/**
queue是一个线程
global是全局的意思,全局菜单给我们创建了3个线程在全局queue中,这个方法有两个参数:
1.优先级:
#define DISPATCH_QUEUE_PRIORITY_HIGH 2 高
#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0 默认
#define DISPATCH_QUEUE_PRIORITY_LOW (-2) 低
#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN
2.字段
*/
/*全局的线程 /
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_async(queue, ^{
__block UIImage *image;
/**可以替代for循环,他跟for循环的区别:它是并行的,for循环是串行的。*/
dispatch_apply(10, queue, ^(size_t index) {
NSLog(@"~~~~~~~%zu",index);
NSString *imageURL = @"http://e.hiphotos.baidu.com/image/pic/item/5fdf8db1cb13495405b54f62544e9258d1094a08.jpg";
NSURL *url = [NSURL URLWithString:imageURL];
image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
[_dataSoucreArr addObject:image];
dispatch_queue_t queue = dispatch_get_main_queue();
dispatch_async(queue, ^{
[myTableView reloadData];
});
});