线程间通信
来源:互联网 发布:双色球大赢家缩水软件 编辑:程序博客网 时间:2024/06/16 08:23
1. 什么叫做线程间通信
在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信。
2. 线程间通信的体现
1个线程传递数据给另1个线程;
在1个线程中执行完特定任务后,转到另1个线程继续执行任务。
线程间通信常用方法
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullableid)arg waitUntilDone:(BOOL)wait;
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullableid)arg waitUntilDone:(BOOL)wait
代码1
1 // 2 // YYViewController.m 3 // 06-NSThread04-线程间通信 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h"10 @interface YYViewController ()11 @property (weak, nonatomic) IBOutlet UIImageView *iconView;12 @end13 14 @implementation YYViewController15 16 - (void)viewDidLoad17 {18 [super viewDidLoad];19 }20 21 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event22 {23 24 // 在子线程中调用download方法下载图片25 [self performSelectorInBackground:@selector(download) withObject:nil];26 }27 28 29 30 -(void)download31 {32 //1.根据URL下载图片33 //从网络中下载图片34 NSURL *urlstr=[NSURL URLWithString:@"fdsf"];35 36 //把图片转换为二进制的数据37 NSData *data=[NSData dataWithContentsOfURL:urlstr];//这一行操作会比较耗时38 39 //把数据转换成图片40 UIImage *image=[UIImage imageWithData:data];41 42 //2.回到主线程中设置图片43 [self performSelectorOnMainThread:@selector(settingImage:) withObject:image waitUntilDone:NO];44 }45 46 47 48 //设置显示图片49 -(void)settingImage:(UIImage *)image50 {51 self.iconView.image=image;52 }53 54 @end
代码2
1 // 2 // YYViewController.m 3 // 06-NSThread04-线程间通信 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h"10 #import <NSData.h>11 12 @interface YYViewController ()13 @property (weak, nonatomic) IBOutlet UIImageView *iconView;14 @end15 16 @implementation YYViewController17 18 - (void)viewDidLoad19 {20 [super viewDidLoad];21 }22 23 24 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event25 {26 // 在子线程中调用download方法下载图片27 28 [self performSelectorInBackground:@selector(download) withObject:nil];29 }30 31 32 -(void)download33 {34 35 //1.根据URL下载图片36 //从网络中下载图片37 NSURL *urlstr=[NSURL URLWithString:@"fdsf"];38 39 //把图片转换为二进制的数据40 NSData *data=[NSData dataWithContentsOfURL:urlstr];//这一行操作会比较耗时41 42 //把数据转换成图片43 UIImage *image=[UIImage imageWithData:data];44 45 //2.回到主线程中设置图片46 //第一种方式47 // [self performSelectorOnMainThread:@selector(settingImage:) withObject:image waitUntilDone:NO];48 49 //第二种方式50 // [self.imageView performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO];51 52 //第三种方式53 [self.iconView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];54 }55 56 57 //设置显示图片58 //-(void)settingImage:(UIImage *)image59 //{60 // self.iconView.image=image;61 //}62 63 @end
0 0
- 线程同步--线程间通信
- 线程同步--线程间通信
- JAVASE线程---线程间通信
- JAVA线程-线程间通信
- 线程3:线程间通信
- 线程与线程间通信
- 线程间通信
- c#线程间通信
- VC 线程间通信
- 线程间通信 ManualResetEvent
- java 线程间通信
- android线程间通信
- VC 线程间通信
- 线程间通信方式
- QT---线程间通信
- Android线程间通信
- 线程间的通信
- linux线程间通信
- KVO使用过程中的陷阱
- 多线程和多进程模型的选用
- offsetLeft到浏览器边用回溯替代的方法
- some useful tar options
- mvc简介
- 线程间通信
- DNS协议解析1--DNS请求协议
- C语言的标识符命名规则
- Codeforces #Round 321 Div2
- light1358 - Fukushima Nuclear Blast【圆与多边形面积的交+二分】
- 网站API自动化测试利器——Postman
- BNUOJ39566 Do use segment tree (树链剖分+维护区间最大连续和)
- HDU Reorder the Books (数学题吧)
- list number of physical RAM in use