iOS-多线程的底层实现
(1)首先回答什么是线程
1个进程要想执行任务,必须得有线程.线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行
(2)什么是多线程
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 下载图片
UIImage *image = nil;
dispatch_async(dispatch_get_main_queue(), ^{
// 回到主线程
});
(2)NSThread的线程通信
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 下载图片
UIImage *image = nil;
[self performSelector:@selector(settingImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:YES modes:nil];
}
这种情况 也适用于子线程之间的通信。
(3)NSThread的线程通信
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 下载图片
UIImage *image = nil;
[self performSelectorOnMainThread:@selector(settingImage:) withObject:image waitUntilDone:YES];
}
3.网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题
利用字典图片地址为key,下载操作为value
4. 列举cocoa中常见对几种多线程的实现,并谈谈多线程安全的几种解决办法及多线程安全怎么控制?
1》开发中实现多线程的方案