iOS 宝典产品大学iOS开发

iOS多线程

2015-08-07  本文已影响1812人  Ljson

1.Pthreads

真正跨平台的多线程技术,可以跨UNIX、Linux、windows平台。


补充点:函数指针

和block的指针类似,函数指针这么来表示:

2.NSThread

NS开头的直接就来到了Foundation框架,一个NSThread对象,就代表一条线程

线程状态

不同线程,同一时刻访问同一块内存,可能导致数据出错。
解决办法,对可能会同时访问一块内存的代码加锁,同一时刻最多只能有一条线程访问这块内存。

互斥锁:对一段代码加锁之后,同一时刻,最多只能有一条线程执行加锁的代码。

互斥锁解决资源抢夺

补充点:自旋锁(automic)


3.GCD

GCD:Grand Central Dispatch,伟大的中枢调度器。使用GCD的时候要把自己置身于一个调度者的身份,而不是纠结线程的问题。就好比十字路口的交警,你不能只关注于一条路,而是调度所有的车辆在不同的道路上畅通行驶。

不同的搭配方式 内存管理

补充:单例

单例: 程序运行过程中,一个类始终只有一个实例对象。从创建好之后,程序死亡,才会让这个实例对象死亡。
一次性代码,经常是用在创建单例对象的时候,保证只分配一次内存。


4.NSOperation

是苹果用OC对GCD的封装,更加的面向对象。把任务创建好,添加到队列即可,系统会自己分配线程,让任务执行。

NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类

上一篇 下一篇

猜你喜欢

热点阅读