同步线程和异步线程的区别

1:同步可以看做是一个单线程操作,只要客户端请求了,在服务器没有反馈信息之前是一个线程阻塞状态(就是假死状态,不能操作其他方法)。

2:异步肯定是个多线程。在客户端请求时,可以执行其他线程,并且在把这个线程存放在他的队列里面,有序的执行。(可以设置线程的数量,当超过最大时会显示等待状态)。


线程同步与异步区别

线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低    线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制

异步处理就是,你现在问我问题,我可以不回答你,等我用时间了再处理你这个问题.同步不就反之了,同步信息被立即处理 -- 直到信息处理完成才返回消息句柄;异步信息收到后将在后台处理一段时间 -- 而早在信息处理结束前就返回消息句柄



简单来说:同步必须执行到底之后才能执行其他操作,而异步可以任意操作

区别:同步比异步实现起来简单一些,用于读取数据量较小的接口。

            异步可以按规定顺序去执行线程,多用于 比如一个网页信息 ,(你把他分成2个线程或者多个,先读取它的title,时间,作者等等 第二个或者其他进程用于读取数据量较大的正文内容,比如图片)。这样对于用户体验很有效果。


下面是同步,异步实现的方法 (从网上复制的)


1. 同步意为着线程阻塞,在主线程中使用此方法会不响应任何用户事件。所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替。


- (IBAction)grabURL:(id)sender  

 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; 

  ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

  [request startSynchronous]; 

  NSError *error = [request error]; 

  if (!error) {  NSString *response = [request responseString];  }  


用 requestWithURL 快捷方法获取 ASIHTTPRequest 的一个实例


startSynchronous 方法启动同步访问


由于是同步请求,没有基于事件的回调方法,所以从 request的error 属性获取错误信息


responseString,为请求的返回 NSString 信息 *


注意:在这里我发现NsUrlRequset和connect系统Api就可以配合做到效果。也不需要到移植开源代码


2. 异步请求的好处是不阻塞当前线程,但相对于同步请求略为复杂,至少要添加两个回调方法来获取异步事件

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值