iOS线程依赖

依赖的作用: 在iOS开发中,我们经常会用到一个线程需要等待另一个结束才能进行的需求,这种需求其实有很实用的解决办法.下面我将列举一些目前用到的方法:

//需求:: 用NSOpertion和NSOpertionQueue处理A,B,C,D,E三个线程,要求执行完A,B,D,E后才能执行C,怎么做?

// 创建队列

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

// 创建5个操作

NSOperation *a = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"operation---a");

}];

NSOperation *b = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"operation---b");

}];

NSOperation *c = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"**************c");

}];

NSOperation *d = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"operation---d");

}];

NSOperation *e = [NSBlockOperation blockOperationWithBlock:^{

NSLog(@"operation---e");

}];

// 添加依赖

[c addDependency:a];

[c addDependency:b];

[c addDependency:d];

[c addDependency:e];

// 执行操作

[queue addOperation:a];

[queue addOperation:b];

[queue addOperation:c];

[queue addOperation:d];

[queue addOperation:e];

打印结果:

2017-08-17 18:38:02.040 依赖[11633:750843] operation---a

2017-08-17 18:38:02.040 依赖[11633:757610] operation---b

2017-08-17 18:38:02.040 依赖[11633:757611] operation---d

2017-08-17 18:38:02.040 依赖[11633:757612] operation---e

2017-08-17 18:38:02.042 依赖[11633:757610] **************c

时间: 2024-10-13 18:37:05

iOS线程依赖的相关文章

iOS线程开发小结

/* 方法名决定是否开启新线程(async,sync),队列类型(全局队列,串行队列)决定开启多少条线程 1.快速线程调用 *开启后台线程执行任务 [self performSelectorInBackground:@selector(test) withObject:nil]; *回到主线程执行任务 [self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES]; 2.GCD

iOS线程浅析

一.线程概述 1. iOS里面的线程按种类可分为同步线程和异步线程.同步线程指调用同步线程的地方必须等到同步线程执行完毕才可以继续向下执行.而调用异步线程的地方则在执行完调用异步线程的语句后就可以继续向下执行. 2.线程按调用方式又可以大致分为以下几种类型:NSObject.NSThread.NSOperation和GCD.NSObject和NSThread只能管理单个的线程,功能较简单,GCD和NSOperation则可以进行队列等复杂操作,且效率较高.其中GCD方式最为有效,NSOperat

iOS线程开发总结

在iOS开发线程操作时,一般方法名决定是否开启新线程(async,sync),队列类型(全局队列,串行队列)决定开启多少条线程 1.快速线程调用 *开启后台线程执行任务 [self performSelectorInBackground:@selector(test) withObject:nil]; *回到主线程执行任务 [self performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:Y

IOS 线程处理 子线程

IOS 线程处理 子线程的启动与结束 技术交流新QQ群:414971585 IOS中,如果要在主线程中启动一个子线程,可以又两种方法: [NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil]; 这是在cocoa早期提供的方法,因此你可以在任何版本的ios和mac上调用此方法.在 OS X v10.5(or later)和IOS中,苹果又提供了一种方法,可以允许你获

iOS 线程锁同步机制

转载自 http://yulingtianxia.com/blog/2015/11/01/More-than-you-want-to-know-about-synchronized/ 如果你已经使用 Objective-C 编写过任何并发程序,那么想必是见过 @synchronized 这货了. @synchronized 结构所做的事情跟锁(lock)类似:它防止不同的线程同时执行同一段代码.但在某些情况下,相比于使用 NSLock 创建锁对象.加锁和解锁来说,@synchronized 用着

IOS线程

一, iOS有三种多线程编程的技术,分别是: 1..NSThread 2.Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用) 3.GCD  全称:Grand Central Dispatch( iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用) 这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的. 二,NSThread 1. [NSThread 

iOS线程编程指南

原英文网址为: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html 同步 在应用程序中的多个线程的存在开辟了潜在的问题,关于安全访问到资源从多个执行线程.两个线程修改相同的资源可能会相互干扰,以意想不到的方式.例如,一个线程可能会覆盖其他人的更改或应用程序置于未知和潜在无效的状态.如果你很幸运,已损坏的资源可能会导致

ios线程总结(持续更新ing)

一.什么是线程: 1.1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 2.线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 3.1个线程中任务的执行是串行的,如果要在1各线程中执行多个任务,那么只能一个一个地按顺序执行这些任务,也就是说,在同一时间内,1个线程只能执行1个任务 二.什么是多线程 1.1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 例:进程 ——>车间  ,线程——>车间工人 2.多线程的原理:同时间,CPU只能处理1条线程

IOS 线程的总结

多线程 1.NSThread 1> 开线程的几种方式* 先创建,后启动NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];[thread start]; * 直接启动[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];[self performSelector