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

  • 多线程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 *)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)}

你可能感兴趣的:(iOS学习-iOS)