访次: AmazingCounters.com 次

多线程的底层实现是什么?

一个应用程序一启动就有一个进程,一个进程至少会有一个线程,这个线程就是主线程,除了主线程之外我们还可以手动创建其他线程,其他线程我们称为子线程,一个进程包含多个线程我们称为多线程,多线程的鼻祖是一个叫Mach的东西,Mach是第一个以多线程方式处理任务的系统,所以说多线程的底层实现机制是基于Mach的.但是在开发过程中我们很少用Mach级别的线程,因为Mach级的线程之间是独立,不能进行线程之间的通讯.所以我们一般都使用GCD NSOperation  NSThread POSIX接口这个一般用的也少.用的最多的是GCD,为什么不用NSThread呢,因为这个管理起来很麻烦,创建,睡眠,等待,阻塞都需要我们自己管理.所以用的做多的还是GCD和NSOperation,这两个哪个用的最多呢,当然是GCD,因为GCD是基于XNU内核实现的,iOS OSX的核心就是这个内核.所以它可以直接和内核进行交互,可以充分利用核,所以性能更高,而其GCD代码更简洁.NSOperation是基于GCD的OC的封装,在开发工程中越高级的东西性能就越低,它需要先转化成GCD再去进行和底层进行交互多个一个转化的过程.比如说现在大家都在研究的swift就是对OC的封装,苹果说它比OC的性能好,但是在底层他还是要转化成OC在转化成运行时,多个一个转换的过程.所以有的时候swifit并没有OC性能好.我记得网上就有大神做个海量的数据测试发现它并没有OC性能高.一般越高级的东西性能越低.

posted @ 2016-02-22 13:40  JusDoit  阅读(1371)  评论(0编辑  收藏  举报