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


    一个应用程序一启动就有一个进程,一个进程至少会有一个线程,这个线程就是主线程,除了主线程之外我们还可以手动创建其他线程,其他线程我们称为子线程,一个进程包含多个线程我们称为多线程,多线程的鼻祖是一个叫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性能高.一般越高级的东西性能越低.

    挥毫泼墨,书写人生篇章
  • 相关阅读:
    FFT学习及简单应用(一点点详细)
    Codeforces 1131 (div 2)
    【NOI2012】魔幻棋盘
    【hdu多校联考第二场】Odd Shops
    【Helvetic Coding Contest 2018】B2. Maximum Control (medium)
    解线性同余方程组
    Math teacher's homework
    【NOIP模拟赛】一道挖掉背景的数学题
    逆向基础-模块隐藏之断链
    解决请求筛选模块被配置为拒绝包含的查询字符串过长的请求
  • 原文地址:https://www.cnblogs.com/Jusive/p/5206879.html
Copyright © 2020-2023  润新知