关于线程的一点总结

多线程的三种方式:


1. NSThread


 (1)实例方法(调用start方法开启多线程)


[[NSThread alloc] initWithTarget:<#(id)#> selector:<#(SEL)#> object:<#(id)#>]


 (2)类方法


[NSThread detachNewThreadSelector:(SEL) toTarget:<#(id)#> withObject:<#(id)#>];


(3)刷新UI必须通过主线程



[self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>];


(4)隐式开启多线程


[self performSelectorInBackground:<#(SEL)#> withObject:<#(id)#>];



2.NSOperation

加锁


//方法1

NSLock  *jereh =[[NSLock alloc] init]

[jereh lock];//加锁

[jereh unlock];


//方法2

@synchronized(self){代码块}









3.GCD


1.同步都不会开辟子线程,无论是串行队列还是并行队列


2.同步就在主线程里执行,异步就会开辟子线程


3.在主线程里,同步执行+主队列(系统自己带的串行队列)=========死锁(在子线程里就不会              死锁)


4.同步执行+自己创建的串行队列(一个一个的执行)


5.同步执行+并行队列(一个一个的执行)


6.异步执行+串行队列=======开启一个子线程,而且顺序执行


7.异步执行+并行队列=======开启多个线程,而且并发执行




异步加载不能加返回值,只要有返回值就是同步的概念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值