//NSOpertionQueue   NSOperation
//Queue
//主队列 和 自定义队列
//主队列是运行在主线程当中,自定义队列运行在后台
//NSOperation 定义需要执行的操作(任务)
//定义需要的操作,然后把该操作添加到合适的队列中
//三个步骤
//1.创建队列对象
//2.创建操作对象
//3.把操作对象添加到队列之中,等待队列分配线程执行操作 //1.创建队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//设置最大并发操作数
//队列中最多有几个操作同时执行
queue.maxConcurrentOperationCount = ;
//是否暂停执行队列中的线程
[queue setSuspended:YES];
//2.创建操作
//NSOperation 不能直接使用
//使用子类的对象 两种方式1、直接创建 2、使用block创建
NSOperation *op1 = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(thread1:)
object:@"op1 "]; NSOperation *op2 = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(thread2:)
object:@"op2 "];
/*
NSBlockOperation *op3 = [[NSBlockOperation alloc] init];
[op3 addExecutionBlock:^{
//具体要执行的操作
}];
*/
//3.把操作加入到队列中
[queue addOperation:op1];
[queue addOperation:op2];
//加入之后,如果有操作,那队列就会自动执行
//4.设置操作的优先级
[op1 setQueuePriority:NSOperationQueuePriorityLow];
[op2 setQueuePriority:NSOperationQueuePriorityVeryHigh];
//5.设置操作之间的依赖关系
[op2 addDependency:op1]; //op2的执行依赖于op1,保证op1肯定op2之前执行
//是否重新让队列执行
[queue setSuspended:NO];
//回到主线程打印输出
for (int i = ; i < ; i ++) {
NSLog(@"主线程 : %d", i);
}
} - (void)thread1:(NSString *)name
{
//具体要执行的操作
for (int i = ; i < ; i ++) {
NSLog(@"多线程 %@: %d", name, i);
}
} - (void)thread2:(NSString *)name
{
for (int i = ; i < ; i ++) {
NSLog(@"多线程 %@: %d", name, i);
}
}

多线程之NSOpertionQueue操作队列的更多相关文章

  1. java多线程之:SynchronousQueue队列

    SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然.同步队列没有任何内部容量,甚至连一个队列的容量都没有.      不能在同步队列上进行 peek ...

  2. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  3. 第十五章、线程之queue模块的各种队列

    目录 第十五章.线程之queue模块的各种队列 一.Queue 二.LifoQueue堆栈 三.PriorityQueue优先级队列 第十五章.线程之queue模块的各种队列 一.Queue impo ...

  4. iOS多线程之8.NSOPeration的其他用法

      本文主要对NSOPeration的一些重点属性和方法做出介绍,以便大家可以更好的使用NSOPeration. 1.添加依赖 - (void)addDependency:(NSOperation * ...

  5. iOS多线程之GCD小记

    iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...

  6. 多线程之RunLoop

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. JAVA多线程之wait/notify

    本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法. ①wait() 与 notify/notifyAll 方法必须在同步代码块中使用 ②wait ...

  8. Android-——多线程之Handler(转)

    Android--多线程之Handler 原文地址:http://www.cnblogs.com/shirley-1019/p/3557800.html 前言 Android的消息传递机制是另外一种形 ...

  9. Android 多线程之IntentService 完全详解

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

随机推荐

  1. 报错解决 unable to unroll loop, loop does not appear to terminate in a timely manner (994 iterations) or unrolled loop is too large, use the [unroll(n)] attribute to force an exact higher number

    在 Unity 写 Shader 的时候,在一个循环里面使用了 tex2D 函数,类似与下面这样: fixed2 center = fixed2(0.5,0.5); fixed2 uv = i.uv ...

  2. .Net Core WebApi 模型验证无效时报400

    问题 模型验证无效时,没有进入到接口里,而是直接报400 Bad Request,非常不友好. 环境 SDK:.Net Core 2.2.401 开发工具:VS2017 step 1 创建接口 /// ...

  3. React中refs持久化

    根据使用React的版本,选择合适的方法. 字符串模式 :废弃不建议使用 回调函数,React版本 < 16.3 React.createRef() :React版本 >= 16.3 回调 ...

  4. Hyper-V “SP2019SER”无法更改状态。操作失败,错误代码为“32788”。

    卸载Hyper-V,然后重装,再重启已有的Hyper-V服务器,报错如下: 尝试启动选定的虚拟机时出错.“SP2019SER”无法更改状态. 原因:卸载后导致虚拟网卡出现问题导致的. 解决办法: 右击 ...

  5. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  6. sql server日期转换为dd-mon-yyyy和dd-MMM-yyyy这样的英文月份格式(27-Aug-2019)

    脚本: /* 功能:sql server日期转换为dd-mon-yyyy和dd-MMM-yyyy这样的格式 示例:27-Aug-2019 作者:zhang502219048 脚本来源:https:// ...

  7. Python语法速查: 7. 函数基础

    返回目录 (1)函数基本 ● 函数是第一类对象 Python中万物皆对象,所有对象都是第一类的(first class),函数也不例外,也是第一类对象.既然是对象,那就可以当作普通的对象数据处理,比如 ...

  8. Red Hat Enterprise Linux 官方正式版镜像下载

    Red Hat Enterprise Linux是美国红帽公司开发的商业市场导向的Linux发行版,为方便大家学习研究,整理分享历代红帽官方正式版镜像给有需要的朋友们. 下载地址:https://ww ...

  9. js对文中某一处关键字自动检索和全文检索

    部分检索: 代码: <%@ page language="java" contentType="text/html; charset=utf-8" pag ...

  10. ansible+playbook 搭建lnmp环境

    用三台机器 做ansible+playbook 搭建lnmp环境 IP分配 ansible 主机192.168.202.132 lnmp第一台主机 192.168.202.131 lnmp第一台主机 ...