多线程

ios有三种主要方法来实现多线程:1NSThread2NSOperation。3GCD

1.NSThread 
     1.1:[NSThread detachNewThreadSelector:@selector(threadInMainMethod:) toTarget:self withObject:nil];
     1.2:NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(threadInMainMethod:) object:nil];
         [myThread start];
     1.3:  [obj performSelectorInBackground:@selector(threadMe) withObject:nil];
   特点: 

    1> 使用简单,轻量级;

    2> 不能控制线程的数量以及执行顺序.

2 NSOperation
     NSOperation可以控制线程的执行顺序。可以设置依赖线程 。假设操作A依赖于操作B,线程操作队列在启动线程时就会首先执行B操作,然后执行A。
   NSOperation和NSOperationQueue对比GCD会带来一点额外的系统开销,但是你可以在多个操作(operation)中添加附属。你可以重用操作,取消或者暂停他们。NSOperation和  Key-Value Observation (KVO)是兼容的;例如,你可以通过监听NSNotificationCenter去让一个操作开始执行。
3 GCD  
     GCD是一种轻量级的方法来代表将要被并发执行的任务单位。你并不需要去计划这些任务单位;系统会为你做计划。在块(block)中添加依赖会是一件令人头疼的事情。取消或者暂停一个块会给一个开发者产生额外的工作!
 
线程安全:@synchronized(self) {

//something like this

}  这其实就是锁,代替NSLock   当两个并发线程访问同一个对象的时候,为了安全,就要加这个,阻塞另一个线程。 例如单例要加这个。

@synchronized中的代码执行时先检查同步对象是否被另一个线程占用,如果占用该线程就会处于等待状态,直到同步对象被释放。

转载于:https://www.cnblogs.com/xing-li/p/4519511.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值