zoukankan      html  css  js  c++  java
  • 多线程 ,NSTread、NSOpetation、GCD

    多线程 ,NSTread、NSOpetation、GCD 

    eg :

    多线程 在iOS 中用的很多 ,比如 网络下载的请求 和 sdwebimage 请求等耗时较多的数据处理,多线程就会派上用场,可以防止界面假死,增强用户体验 

    是一个简单的以任务为导向的多线程模型。目的是 为了不懂操作系统,不懂线程的人使用的
    第一种:NSBlockOperation *blockOp1 = [NSBlockOperation blockOperationWithBlock:^{}

    第二种: NSInvocationOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(operation1:) object:@"任务1"];

    前两种都要 放入线程池中[_queue addOperation:blockOp1]; 

    第三种:直接向线程池 添加 block 任务  [_queue addOperationWithBlock:^{}

    )

    二、 NSTread  是创建线程的一个通用的类。比如线程创建 ,取消,开始。

    (有三种 创建 方式 :

     //1.创建一个后台线程

    [self performSelectorInBackground:@selector(threadClick1:) withObject:@"线程1"];

    //2.创建线程

    NSThread *thread2 = [[NSThread alloc] initWithTarget:self selector:@selector(threadClick2:) object:@"线程2"];

    thread2.name = @"thread2";

    //这种创建方式需要手动启动线程

    [thread2 start];

    //3/创建子线程 这种方式一旦创建 立即启动

    [NSThread detachNewThreadSelector:@selector(threadClick3:) toTarget:self withObject:@"线程3"];

     

    [thread cancel]; cancel 给 thread表示的线程发送一个取消信号,thread线程 就会接收到,接收到之后 需要thread表示的线程   自己结束(自己判断是否需要结束)

    三、GCD 

    是一个带block 的线程模块 

    GCD 有三种 队列类型 :

    The main queue :与主线程功能相同 。可以调用 dispatch_get_main_queue( )获得 。是串行队列 

    dispatch_async(dispatch_get_main_queue(), ^{})

    Global queues :全局队列 是并发队列。进程中有三种全局队列 高,中(默认),低 三个优先级队列 。可以调用 dispatch_get_global_queue( )传入优先级 访问队列

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{});

    用户队列:dispatch_queue_create 创建的队列  这些队列是串行 队列

    dispatch_queue_t queue = dispatch_queue_create("com.1505", NULL);

    dispatch_async(queue, ^{});

  • 相关阅读:
    POJ 3468 A Simple Problem with Integers(线段树 区间更新)
    Windows Mobile 6.0 SDK和中文模拟器下载
    Linux学习笔记——例说makefile 头文件查找路径
    uva 11427
    腾讯2014年实习生招聘笔试面试经历
    AVC1与H264的差别
    oracle递归函数
    全部编程皆为Web编程
    JavaScript--语法2--语句结构
    JavaScript--变量和运算符
  • 原文地址:https://www.cnblogs.com/PengFei-N/p/4703202.html
Copyright © 2011-2022 走看看