您的位置:首页 > 产品设计 > UI/UE

iOS学习笔记-117.多线程16——NSOperationQueue最大并发数

2017-09-05 23:07 459 查看
多线程16NSOperationQueue最大并发数
一最大并发数
1 什么是并发数

2 最大并发数的相关方法

3 最大并发数说明

二代码示例

三结果

多线程16——NSOperationQueue最大并发数

一、最大并发数

1.1 什么是并发数

同时执行的任务数

比如,同时开3个线程执行3个任务,并发数就是3

1.2 最大并发数的相关方法

- (NSInteger)maxConcurrentOperationCount;

- (void)setMaxConcurrentOperationCount:(NSInteger)cnt;


1.3 最大并发数说明

//同一时间最多有多少个任务可以执行

//串行执行任务!=只开一条线程 (线程同步)

// maxConcurrentOperationCount >1 那么就是并发队列

// maxConcurrentOperationCount == 1 那就是串行队列

// maxConcurrentOperationCount == 0  不会执行任务

// maxConcurrentOperationCount == -1 特殊意义 最大值 表示不受限制


二、代码示例

//
//  QWMViewController2.m
//  03_UIview85多线程_NSOperation
//
//  Created by 杞文明 on 17/9/4.
//  Copyright © 2017年 杞文明. All rights reserved.
//

#import "QWMViewController2.h"

@interface QWMViewController2 ()

@end

@implementation QWMViewController2

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self invocationOperationWithQueue];
}

-(void)invocationOperationWithQueue{
//1.创建操作,封装任务
NSInvocationOperation *op1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download:) object:@"1"];
NSInvocationOperation *op2 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download:) object:@"2"];
NSInvocationOperation *op3 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download:) object:@"3"];

//2.创建队列
//设置最大并发数量 maxConcurrentOperationCount
//同一时间最多有多少个任务可以执行
//串行执行任务!=只开一条线程 (线程同步)
// maxConcurrentOperationCount >1 那么就是并发队列
// maxConcurrentOperationCount == 1 那就是串行队列
// maxConcurrentOperationCount == 0  不会执行任务
// maxConcurrentOperationCount == -1 特殊意义 最大值 表示不受限制
NSOperationQueue *queue = [[NSOperationQueue alloc]init];
queue.maxConcurrentOperationCount = 1;

//3.添加任务到队列中
[queue addOperation:op1];
[queue addOperation:op2];
[queue addOperation:op3];
}

-(void)download:(NSString*)params{
NSLog(@"--%@----%@",params,[NSThread currentThread]);
}

@end


三、结果

[19573:104374] --1----<NSThread: 0x60000026c800>{number = 6, name = (null)}
[19573:104374] --2----<NSThread: 0x60000026c800>{number = 6, name = (null)}
[19573:104374] --3----<NSThread: 0x60000026c800>{number = 6, name = (null)}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: