zoukankan      html  css  js  c++  java
  • GCD

    1.线程:按照线型的顺序执行的流程。 叫做线程

    -(void)method{

    [self runA];

    [self runB];

    }//先执行runA ,如果说RunA没有执行完成,runB  就一直等到runA 执行完毕,再执行runB,因为他们都是一个线程,单线程好比一个人去执行三个任务,先执行第一个任务,执行完成再执行第二个任务,依次完成,所有任务都我一个人完成。多线程好比,我在执行第一个任务,我叫我兄弟去执行第二个,那我就可以去做第三个任务了,不必等他。

    进程:每一个进程就是一个应用程序。都有独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的情况,同一进程中的线程共享内存中的内存和资源。一个进程里面包含多个线程,。浏览器是有很多个进程的。

    多线程概念:每一个程序都有一个主线程,程序启动时创建(调用主线程来启动),程序退出时,主线程也就停止了,多线程中一个应用程序有多个线程,(比如一颗大树,都有一个主躯干,其他的分支就是线程,主线程就是主躯干) 使用多线程可以CUP的使用效率,防止主线程阻塞。任何有可能堵塞住线程的任务不要放在主线程中执行,一切跟UI有关的操作都放在主线程中执行(按钮等)。跟UI无关的时候比如网络请求,下载电影占很长时间等。

    NSOperation 是一个操作(任务),一个操作就是一个线程。

    举例:一百人买票,一个窗口就是一个线程,一人一分钟,就是一百分钟,多线程就是多个窗口,提升性能,

    NSThread

    第一种开启新的线程的调用 mutableThread

    NSThread *t [NSTHread alloc]initWithTarget:self selector:@selector(mutableThread) object:nil];

    [t start]; // 需要手动开启

    第二中开启新的线程的调用mutableThread,不需要手动调用

    [NSTHread detachNewThreadSelector:@selector(mutableThread) toTarget:self withObject:nil];

    第三种开启新的线程调用mutableThread,在后台执行这个方法,前两个方法基本不用。常用的第四种

    [self performSelectorInBackground:@selector(mutableThread)withObject withObject:nil];

    +(BOOL)[isMuliThreaded ]是否是多线程 是的话输出1,不是输出0

    第四种 

  • 相关阅读:
    spark2.1源码分析2:从SparkPi分析一个job的执行
    spark2.1源码分析2:从SparkPi分析一个job的执行
    spark2.1源码分析1:Win10下IDEA源码阅读环境的搭建
    spark2.1源码分析1:Win10下IDEA源码阅读环境的搭建
    常用又容易忘记的JS小功能合集 本贴收集信息为自用,如果能帮到您,实属荣幸
    Java 之 volatile 关键字
    关于synchronized批量重偏向和批量撤销的一个小实验
    Spring嵌套事务机制
    关于HashMap的一个有趣的小问题
    可阻塞队列的实现
  • 原文地址:https://www.cnblogs.com/yangliangliang/p/4686280.html
Copyright © 2011-2022 走看看