zoukankan      html  css  js  c++  java
  • oc进程和线程

    1.进程:正在运行的程序,负责程序的内存分配,每一个进程都有自己独立的虚拟内存空间。(一个程序运行的动态过程)

    2.线程:线程是进程中一个独立执行的路径(控制单元)一个进程至少包含一条线程,即主线程可以将耗时的执行路径(如网络请求)放在其他线程中执行。

    3.创建线程的目的:为了开启一条新的执行路径,运行指定的代码,与主线程的代码实现同时执行。

    .主线程的栈区

    控件大小为1M,非常非常宝贵

    .子线程的栈区

    空间大小为512

    .内存控件

    多任务系统调度

    .每一个应用程序由操作系统分配的短暂的时间片轮流使用和cpu,忧郁cpu对于每个时间片的处理速度非常快,用户感觉这些任务是同时进行的。

    .并发:多个任务在同一段时间内同时执行,但在一个时间点,一个cpu只能执行一个任务。

    多线程的概念说明

    .优势

        充分发挥多核处理器的优势,将不同线程任务分配给不同的处理器,真正进入“并行计算”状态

    .弊端

        新线程会消耗内存控件和cpu时间,线程太多会降低系统运行性能。

    ios的三种线程技术

    .NSThread

    使用NSTHread对象建立线程非常方便,但是,管理多个线程非常困难,不推荐使用。

    .CGD - Drand Central Dispatch

    基于C语言的覅曾API,用BLOCK定义任务,使用起来非常灵活边界,提供了更多的控制力和操作队列中所不能使用的底层函数。

     GCD的全局队列

    为了方便多线程的设计,提供了一个全局队列,供所有app使用

    获得全局队列

    dispath_queue_t q =dispath_get_global_queue(DISPATH_QUEUE_PRIORITY_DEFAULT,0);

    第一个参数为全局队列的优先级:

    #define DISPATH_QUEUE_PRIORITY_HIGH 2

    #define DISPATH_QUEUE_PRIORITY_DEFAULT 0

    #define DISPATH_QUEUE_PRIORITY_LOW(-2)

    #define DISPATH_QUEUE_PRIORITY_BACGROUNS INT16_MIN

    第二个参数为保留参数

  • 相关阅读:
    送走2015,迎来2016
    Android-Volley网络通信框架(StringRequest & JsonObjectRequest)
    Mac上配置 Ruby on Rails和Git
    学习Javascript闭包(Closure)
    cocos2d-x 学习资源整理(持续更新...)
    android自己定义刷新类控件
    awk条件语句
    Leetcode 236 Lowest Common Ancestor of a Binary Tree
    Linux查看当前正在执行的进程
    Thinking in UML 学习笔记(三)——UML核心视图之类图
  • 原文地址:https://www.cnblogs.com/fanxinguu/p/4513066.html
Copyright © 2011-2022 走看看