iOS开发多线程-线程间通讯

一、NSThread 线程间的通讯

 1 - (void)demoAboutNSThread
 2 {
 3     NSLog(@"demoAboutNSThread %@", [NSThread currentThread]);
 4     NSThread * thread = [[NSThread alloc] initWithTarget:self selector:@selector(longTimeOperation) object:nil];
 5     [thread start];
 6 }
 7
 8 - (void)longTimeOperation
 9 {
10      NSLog(@"longTimeOperation %@", [NSThread currentThread]);
11     [self performSelectorOnMainThread:@selector(mainThreadOperation) withObject:nil waitUntilDone:NO];
12 }
13
14 - (void)mainThreadOperation
15 {
16     NSLog(@"mainThreadOperation %@",[NSThread currentThread]);
17 }

二、GCD 线程间通讯

 1 - (void)dispatchDemo
 2 {
 3     NSLog(@" start %@",[NSThread currentThread]);
 4
 5     dispatch_async(dispatch_get_global_queue(0, 0), ^{
 6         NSLog(@" 耗时从左 %@",[NSThread currentThread]);
 7
 8         dispatch_sync(dispatch_get_main_queue(), ^{
 9             NSLog(@" 回到主线程 %@", [NSThread currentThread]);
10         });
11
12     });
13
14     NSLog(@"end %@",[NSThread currentThread]);
15 }

三、NSOperation 线程间的通讯

 1 - (void)demoAboutNSOperation
 2 {
 3    NSOperation * block =  [NSBlockOperation blockOperationWithBlock:^{
 4         NSLog(@"block %@",[NSThread currentThread]);
 5     }];
 6
 7     [self.queue addOperation:block];
 8
 9     [self.queue addOperationWithBlock:^{
10         NSLog(@"耗时操作 %@",[NSThread currentThread]);
11         [[NSOperationQueue mainQueue] addOperationWithBlock:^{
12             NSLog(@" mainQueue %@",[NSThread currentThread]);
13         }];
14     }];
15
16
17 }
时间: 2024-10-12 20:27:45

iOS开发多线程-线程间通讯的相关文章

iOS开发-多线程-线程间通讯

iOS开发多线程篇—线程间的通信 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 线程间通信常用方法 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelector:(SE

iOS开发-多线程-线程安全

一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 示例一: 示例二: 问题代码: 1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase. All rights res

iOS开发多线程篇—线程间的通信

iOS开发多线程篇—线程间的通信 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 线程间通信常用方法 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelector:(SE

iOS开发多线程篇—线程间的通信(转)

这里转载 给自己一个备份 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 线程间通信常用方法 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelector:(SEL)aS

iOS开发多线程篇—线程的状态

iOS开发多线程篇—线程的状态 一.简单介绍 线程的创建: self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; 说明:创建线程有多种方式,这里不做过多的介绍. 线程的开启: [self.thread start]; 线程的运行和阻塞: (1)设置线程阻塞1,阻塞2秒 [NSThread sleepForTimeInterval:2.0]; (2)第二种设置线程阻塞2,以当前时

iOS开发多线程篇—创建线程

iOS开发多线程篇—创建线程 一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建.启动线程 (1) NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread start]; // 线程一启动,就会在线程thread中执行self的run方法 主线程相关用法 + (NSThread *)mainThread; // 获得主线程 -

iOS开发多线程篇 03 —线程安全

iOS开发多线程篇—线程安全 一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 示例一: 示例二: 问题代码: 1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase.

iOS开发多线程篇—线程安全 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3805841.html iOS开发多线程篇—线程安全 一.多线程的安全隐患 资源共享 1 块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 示例一: 示例二: 问题代码: 1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Create

iOS开发多线程篇—线程的状态 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3807184.html iOS开发多线程篇-线程的状态 一.简单介绍 线程的 创建 : self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; 说明:创建线程有多种方式,这里不做过多的介绍. 线程的 开启 : [self.thread start]; 线程的 运行 和 阻塞 : (1)设置线程阻塞