
本章节主要学习iOS开发中的多线程内容,在开发过程中大家多多少少都会使用到多线程,今天大家就和我一起来了解多线程的秘密吧!
在iOS的世界里共有4种多线程的方案
多线程是一种比较轻量级的方法来实现应用程序内的多个代码的执行,每个程序至少包含一个线程。在系统级别内,程序并排执行,系统分配到每个程序的执行时间是基于该程序的所需时间和其他程序的所需时间来决定的。然而在每个应程序的内部,存在一个或多个执行线程,它同时或在一个几乎同时发生的方式里执行不同的任务。
Pthreads
POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。
代码:
引入头文件
#import "pthread.h"
然后创建线程任务
- (void)viewDidLoad {
[super viewDidLoad];
pthread_t thread;
pthread_create(&thread, NULL, startThread, NULL);
}
void *startThread() {
NSLog(@"%@", [NSThread currentThread]);
return NULL;
}
打印如下:
<NSThread: 0x7fc0fbd00290>{number = 2, name = (null)}
Pthreads定义了一套C语言的类型、函数与常量,它以pthread.h头文件和一个线程库实现,Pthreads需要手动管理线程的生命周期,所以一般不建议使用。
NSThread
NSThread是经过苹果封装的,并且完全面向对象的。但同样还是需要自己管理线程的生命周期、同步、加锁等问题。
GCD
GCD是一个轻量的,底层实现隐藏的神奇技术,我们能够通过GCD和block轻松实现多线程编程,有时候,GCD相比其他系统提供的多线程方法更加有效,当然,有时候GCD不是最佳选择。但同时用GCD来做依赖会是一件令人头疼的事情 。
NSOperation & NSOperationQueue
NSOperation&NSOperationQueue对比GCD会带来一点额外的系统开销,但是你可以在多个操作(operation)中添加附属。你可以重用操作,取消或者暂停他们。

This work is licensed under a CC A-S 4.0 International License.




近期评论