zoukankan      html  css  js  c++  java
  • 多线程简单总结

    多线程

    1 多线程原理

    多线程的原理就是在 APP 运行中,多个线程之间的关联.现在

    • 对于单核 CPU 来说,同一时间内,CPU 只能处理一个线程,
    • 多线程同时执行的实质是, CPU 在多条线程之间快速的切换.
    • 多核 CPU 来说,就是在同一时间内有多条线程可以同时执行

    2 进程和线程

    进程:(一个 APP 有一个进程)

    1.1 进程是指在系统中正在运行的应用程序

    1.2 每个进程之间的独立的,每个进程均运行在其专用的且受保护的内存空间内

    1.3 通过 活动监视器 可以查看Mac 系统中所开启的进程

    线程:

    1.1 一个进程至少有一个线程组成

    1.2 线程的进程的基本执行单元,一个进程是所有任务都在线程中执行

    3 资源抢夺/死锁

                多个线程同一时间内,共同访问一个资源.会造成资源的抢夺.线程之间(以 A 和 B 为例),A 等待 B 释放资源, B 等待 A 释放资源,相互之间等待会造成死锁.

    4 NSThread,GCD&NSOperation

    1)NSThread

    优点:NSThread 比其他两个轻量级

    缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销

    2)Cocoa  NSOperation

    优点:不需要关心线程管理, 数据同步的事情,可以把精力放在自己需要执行的操作上。

    Cocoa operation相关的类是NSOperation, NSOperationQueue.

    NSOperation是个抽象类,使用它必须用它的子类,可以实现它或者使用它定义好的两个子类: NSInvocationOperation和NSBlockOperation.

    创建NSOperation子类的对象,把对象添加到NSOperationQueue队列里执行。

    3) GCD(全优点)

    Grand Central dispatch(GCD)是Apple开发的一个多核编程的解决方案。在iOS4.0开始之后才能使用。GCD是一个替代NSThread, NSOperationQueue,NSInvocationOperation等技术的很高效强大的技术。

    5 线程之间的通信

    5.1 全局变量

    进程中的线程间内存共享.(常用)

    注:定义全局变量的时候,最好要用volatile修饰,以免被系统修饰.

    5.2 Message消息机制

    常用的Message通信的接口主要有两个:PostMessage和PostThreadMessage, PostMessage为线程向主窗口发送消息。而PostThreadMessage是任意两个线程之间的通信接口。

     

  • 相关阅读:
    'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.
    flask os.environ 的作用
    flask 中xx.init_app(app)方法
    win10安装ubuntu双系统遇到的问题
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    常用正则
    使用elementUI动态增减表单项 且 使用自定义校验
  • 原文地址:https://www.cnblogs.com/xuan-yuan/p/5453446.html
Copyright © 2011-2022 走看看