IOS多线程

IOS多线程

  • IOS多线程的开销

    • 内核数据结构-大约1KB。
    • 栈空间-子线程512KB,主线程1MB。(通过线程对象可以使用-setStackSize:函数设置线程空间,但必须是4K的倍数,而且最小是16K)
    • 创建线程大约需要90毫秒。
  • 什么是主线程?

    • iOS程序运行后,会默认开启一条线程,这条线程称为主线程或者叫做UI线程
  • 主线程(UI线程)的作用?

    • 显示或者刷新UI界面。
    • 处理UI事件.(点击事件、滚动事件、拖拽事件等)
  • 主线程的使用注意事项

    • 不要将耗时的操作放到主线程中。
  • 互斥锁(线程同步技术 )

    • 互斥锁@synchronized的使用格式
    @synchronized(锁对象)
    

{
//锁定的代码
}
//使用的的锁对象需要保证是同一个对象。


* 互斥锁使用举例

//声明锁
@interface ViewController ()
/锁对象
@property (nonatomic, strong) NSObject *locker;
@end
@implementation ViewController
-(void)viewDidLoad
{
//初始化锁
self.locker = [[NSObject alloc] init];
//创建线程
self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(sub-thread) object:nil];
//开始线程
self.thread start];
}
-(void)sub-thread
{
@synchronized(锁对象)
{
//锁定的代码
}
}
@end


* 互斥锁的优缺点
  * 优点:可以解决多线程同时操作同一数据引发的数据安全问题。
  * 缺点:浪费CPU资源。

########```注意事项```
  * 不要在主线程里加互斥锁,加到子线程里。
  *  涉及到数据访问/数据操作的时候加锁。
  * 多线程默认是异步执行的。

你可能感兴趣的:(IOS多线程)