zoukankan      html  css  js  c++  java
  • 多线程的底层实现是什么?

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

    挥毫泼墨,书写人生篇章
  • 相关阅读:
    Codeforces 722C. Destroying Array
    Codeforces 722D. Generating Sets
    【BZOJ】3436: 小K的农场
    数论四·扩展欧几里德
    数论三·约瑟夫问题
    数论二·Eular质数筛法
    #1287 : 数论一·Miller-Rabin质数测试
    树的维护
    可持久化线段树
    【NOIP2016】天天爱跑步
  • 原文地址:https://www.cnblogs.com/Jusive/p/5206879.html
Copyright © 2011-2022 走看看