谁能比较清晰的描述一下 同步异步阻塞非阻塞的概念及区别???

lifreshman 2011-05-11 09:39:59
谁能比较清晰的描述一下 同步异步阻塞非阻塞的概念及区别???
...全文
660 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
一曲肝肠断 2011-05-11
  • 打赏
  • 举报
回复
还有1楼的解释只对于网络来说的,对于操作系统内核操作,也充满同步和异步操作,但是我见过的基本都是异步操作。同步操作的话可能会死人的,
2011-05-11
  • 打赏
  • 举报
回复
同步/异步:
如果调用完成以后所请求的动作要么成功完成,要么失败,叫做同步。
如果调用完成以后所请求的动作还将继续进行,暂时无法得知操作的完成情况,叫做异步。

阻塞/非阻塞:
当请求不能被立即接受时,若立即放弃此次请求并返回一个错误,叫做非阻塞;若一直等到请求可以被接受(或者有错误发生)再返回,叫做阻塞。
一曲肝肠断 2011-05-11
  • 打赏
  • 举报
回复
至于阻塞非阻塞,上面已经有人说的很清楚了,
就是一个要等,一个不要等
一曲肝肠断 2011-05-11
  • 打赏
  • 举报
回复
其实同步异步和阻塞非阻塞都是对于多线程来说的,
同步可以理解成亲自去做一件事,从开始一直到结束。
异步来说呢,就是某一步可能会等很久,我就找个人替我做,做完了告诉我(当然包括结果了),这中间我还可以做别的事,

lifreshman 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dingwo006 的回复:]
同步和阻塞没办法比较,不同的概念怎么比较。
[/Quote]
哦,那怎么我自己去打饭就算是同步了呢,你能再帮我说一下同步的概念吗,谢谢啦!
一曲肝肠断 2011-05-11
  • 打赏
  • 举报
回复
同步和阻塞没办法比较,不同的概念怎么比较。
lifreshman 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ljt3969636 的回复:]
我的理解:
1去食堂打饭你自己去就是同步
你排队死等不打到饭不罢休而且排队过程中不做别的,是阻塞,你依然排队但是你和前后的同学说好了,算我在这排着我去干点别的事,轮到你了你再来打饭这是非阻塞

2你自己不去食堂打饭,让你同学代你打饭,打完你去吃这是异步。

区别异步和非阻塞的关键看打饭这个动作的主体是你还是他人

以上不一定完全正确,有什么不对的地方,也请其他人指正
[/Quote]

那同步和阻塞的区别是什么呢,同步说的有点笼统!
一曲肝肠断 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 -1 楼 l某某某 的回复:]
2你自己不去食堂打饭,让你同学代你打饭,打完你去吃这是异步。
[/Quote]
这个比喻很恰当,因为你在等待时候,可以做别的事
[Quote=引用 -2 楼 某某某 的回复:]
你把东西和卡交给老婆,让她排队结账,自己“非阻塞”的从旁边通道到停车场,开车出来等待老婆与你“同步”后,回家。
[/Quote]
这个怎么看都不是异步操作,总体感觉比喻总是怪怪的,
lifreshman 2011-05-11
  • 打赏
  • 举报
回复
三楼的还换了个身份,由女朋友到老婆了!
一曲肝肠断 2011-05-11
  • 打赏
  • 举报
回复
2楼解释很恰当,3楼解释牵强
maoxing63570 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arnold_fly 的回复:]
你和女友约好下午2点约会,在去约会的路上,你们是“异步”前往约会地点,如果你先到了,那么就得“阻塞”,等待你的女友和你“同步”,才能开始约会。如果她先到了,又心高气傲,那么她就“非阻塞”的走了,你得费九牛二虎之力才有可能再约出来。

你和老婆商定下午2点去shopping,在超市里,你们先是“异步”挑选各自想买的东西,接着“同步”挑选家庭所需,然后准备结账走人,发现收银台被“阻塞”了,你把东西……
[/Quote]
楼上的有才
深呼吸 2011-05-11
  • 打赏
  • 举报
回复
你和女友约好下午2点约会,在去约会的路上,你们是“异步”前往约会地点,如果你先到了,那么就得“阻塞”,等待你的女友和你“同步”,才能开始约会。如果她先到了,又心高气傲,那么她就“非阻塞”的走了,你得费九牛二虎之力才有可能再约出来。

你和老婆商定下午2点去shopping,在超市里,你们先是“异步”挑选各自想买的东西,接着“同步”挑选家庭所需,然后准备结账走人,发现收银台被“阻塞”了,你把东西和卡交给老婆,让她排队结账,自己“非阻塞”的从旁边通道到停车场,开车出来等待老婆与你“同步”后,回家。
ljt3969636 2011-05-11
  • 打赏
  • 举报
回复
我的理解:
1去食堂打饭你自己去就是同步
你排队死等不打到饭不罢休而且排队过程中不做别的,是阻塞,你依然排队但是你和前后的同学说好了,算我在这排着我去干点别的事,轮到你了你再来打饭这是非阻塞

2你自己不去食堂打饭,让你同学代你打饭,打完你去吃这是异步。

区别异步和非阻塞的关键看打饭这个动作的主体是你还是他人

以上不一定完全正确,有什么不对的地方,也请其他人指正
fish_phenix 2011-05-11
  • 打赏
  • 举报
回复
同步:一个线程只监听一个套接字,可以用于udp
异步: 使用io模型中的一种,如select ,event,一个线程监听多套接字
阻塞: 套接字的send recv 等操作再执行完成以前会阻塞
非阻塞: 操作不会阻塞,所以函数的返回值也不再准确
ljt3969636 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lifreshman 的回复:]

引用 9 楼 dingwo006 的回复:
同步和阻塞没办法比较,不同的概念怎么比较。

哦,那怎么我自己去打饭就算是同步了呢,你能再帮我说一下同步的概念吗,谢谢啦!
[/Quote]
同步就是你(当前线程亲自做),阻塞和非阻塞发生在同步里,一个是你等的时候不能做别的得一门心思傻等,一个是你等的过程中可以做其他事,免得浪费时间。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧