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

时间:2021-07-09 19:52:20
谁能比较清晰的描述一下 同步异步阻塞非阻塞的概念及区别???

15 个解决方案

#1


同步:一个线程只监听一个套接字,可以用于udp
异步: 使用io模型中的一种,如select ,event,一个线程监听多套接字
阻塞: 套接字的send recv 等操作再执行完成以前会阻塞
非阻塞:  操作不会阻塞,所以函数的返回值也不再准确

#2


我的理解:
1去食堂打饭你自己去就是同步
你排队死等不打到饭不罢休而且排队过程中不做别的,是阻塞,你依然排队但是你和前后的同学说好了,算我在这排着我去干点别的事,轮到你了你再来打饭这是非阻塞

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

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

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

#3


你和女友约好下午2点约会,在去约会的路上,你们是“异步”前往约会地点,如果你先到了,那么就得“阻塞”,等待你的女友和你“同步”,才能开始约会。如果她先到了,又心高气傲,那么她就“非阻塞”的走了,你得费九牛二虎之力才有可能再约出来。

你和老婆商定下午2点去shopping,在超市里,你们先是“异步”挑选各自想买的东西,接着“同步”挑选家庭所需,然后准备结账走人,发现收银台被“阻塞”了,你把东西和卡交给老婆,让她排队结账,自己“非阻塞”的从旁边通道到停车场,开车出来等待老婆与你“同步”后,回家。

#4


引用 3 楼 arnold_fly 的回复:
你和女友约好下午2点约会,在去约会的路上,你们是“异步”前往约会地点,如果你先到了,那么就得“阻塞”,等待你的女友和你“同步”,才能开始约会。如果她先到了,又心高气傲,那么她就“非阻塞”的走了,你得费九牛二虎之力才有可能再约出来。

你和老婆商定下午2点去shopping,在超市里,你们先是“异步”挑选各自想买的东西,接着“同步”挑选家庭所需,然后准备结账走人,发现收银台被“阻塞”了,你把东西……

楼上的有才

#5


2楼解释很恰当,3楼解释牵强

#6


三楼的还换了个身份,由女朋友到老婆了!

#7


引用 -1 楼 l某某某 的回复:
2你自己不去食堂打饭,让你同学代你打饭,打完你去吃这是异步。

这个比喻很恰当,因为你在等待时候,可以做别的事
引用 -2 楼 某某某 的回复:
你把东西和卡交给老婆,让她排队结账,自己“非阻塞”的从旁边通道到停车场, 开车出来等待老婆与你“同步”后,回家。

这个怎么看都不是异步操作,总体感觉比喻总是怪怪的,

#8


引用 2 楼 ljt3969636 的回复:
我的理解:
1去食堂打饭你自己去就是同步
你排队死等不打到饭不罢休而且排队过程中不做别的,是阻塞,你依然排队但是你和前后的同学说好了,算我在这排着我去干点别的事,轮到你了你再来打饭这是非阻塞

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

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

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


那同步和阻塞的区别是什么呢,同步说的有点笼统!

#9


同步和阻塞没办法比较,不同的概念怎么比较。

#10


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

哦,那怎么我自己去打饭就算是同步了呢,你能再帮我说一下同步的概念吗,谢谢啦!

#11


其实同步异步和阻塞非阻塞都是对于多线程来说的,
同步可以理解成亲自去做一件事,从开始一直到结束。
异步来说呢,就是某一步可能会等很久,我就找个人替我做,做完了告诉我(当然包括结果了),这中间我还可以做别的事,

#12


至于阻塞非阻塞,上面已经有人说的很清楚了,
就是一个要等,一个不要等

#13


同步/异步:
如果调用完成以后所请求的动作要么成功完成,要么失败,叫做同步。
如果调用完成以后所请求的动作还将继续进行,暂时无法得知操作的完成情况,叫做异步。

阻塞/非阻塞:
当请求不能被立即接受时,若立即放弃此次请求并返回一个错误,叫做非阻塞;若一直等到请求可以被接受(或者有错误发生)再返回,叫做阻塞。

#14


还有1楼的解释只对于网络来说的,对于操作系统内核操作,也充满同步和异步操作,但是我见过的基本都是异步操作。同步操作的话可能会死人的,

#15


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

哦,那怎么我自己去打饭就算是同步了呢,你能再帮我说一下同步的概念吗,谢谢啦!

同步就是你(当前线程亲自做),阻塞和非阻塞发生在同步里,一个是你等的时候不能做别的得一门心思傻等,一个是你等的过程中可以做其他事,免得浪费时间。

#1


同步:一个线程只监听一个套接字,可以用于udp
异步: 使用io模型中的一种,如select ,event,一个线程监听多套接字
阻塞: 套接字的send recv 等操作再执行完成以前会阻塞
非阻塞:  操作不会阻塞,所以函数的返回值也不再准确

#2


我的理解:
1去食堂打饭你自己去就是同步
你排队死等不打到饭不罢休而且排队过程中不做别的,是阻塞,你依然排队但是你和前后的同学说好了,算我在这排着我去干点别的事,轮到你了你再来打饭这是非阻塞

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

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

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

#3


你和女友约好下午2点约会,在去约会的路上,你们是“异步”前往约会地点,如果你先到了,那么就得“阻塞”,等待你的女友和你“同步”,才能开始约会。如果她先到了,又心高气傲,那么她就“非阻塞”的走了,你得费九牛二虎之力才有可能再约出来。

你和老婆商定下午2点去shopping,在超市里,你们先是“异步”挑选各自想买的东西,接着“同步”挑选家庭所需,然后准备结账走人,发现收银台被“阻塞”了,你把东西和卡交给老婆,让她排队结账,自己“非阻塞”的从旁边通道到停车场,开车出来等待老婆与你“同步”后,回家。

#4


引用 3 楼 arnold_fly 的回复:
你和女友约好下午2点约会,在去约会的路上,你们是“异步”前往约会地点,如果你先到了,那么就得“阻塞”,等待你的女友和你“同步”,才能开始约会。如果她先到了,又心高气傲,那么她就“非阻塞”的走了,你得费九牛二虎之力才有可能再约出来。

你和老婆商定下午2点去shopping,在超市里,你们先是“异步”挑选各自想买的东西,接着“同步”挑选家庭所需,然后准备结账走人,发现收银台被“阻塞”了,你把东西……

楼上的有才

#5


2楼解释很恰当,3楼解释牵强

#6


三楼的还换了个身份,由女朋友到老婆了!

#7


引用 -1 楼 l某某某 的回复:
2你自己不去食堂打饭,让你同学代你打饭,打完你去吃这是异步。

这个比喻很恰当,因为你在等待时候,可以做别的事
引用 -2 楼 某某某 的回复:
你把东西和卡交给老婆,让她排队结账,自己“非阻塞”的从旁边通道到停车场, 开车出来等待老婆与你“同步”后,回家。

这个怎么看都不是异步操作,总体感觉比喻总是怪怪的,

#8


引用 2 楼 ljt3969636 的回复:
我的理解:
1去食堂打饭你自己去就是同步
你排队死等不打到饭不罢休而且排队过程中不做别的,是阻塞,你依然排队但是你和前后的同学说好了,算我在这排着我去干点别的事,轮到你了你再来打饭这是非阻塞

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

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

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


那同步和阻塞的区别是什么呢,同步说的有点笼统!

#9


同步和阻塞没办法比较,不同的概念怎么比较。

#10


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

哦,那怎么我自己去打饭就算是同步了呢,你能再帮我说一下同步的概念吗,谢谢啦!

#11


其实同步异步和阻塞非阻塞都是对于多线程来说的,
同步可以理解成亲自去做一件事,从开始一直到结束。
异步来说呢,就是某一步可能会等很久,我就找个人替我做,做完了告诉我(当然包括结果了),这中间我还可以做别的事,

#12


至于阻塞非阻塞,上面已经有人说的很清楚了,
就是一个要等,一个不要等

#13


同步/异步:
如果调用完成以后所请求的动作要么成功完成,要么失败,叫做同步。
如果调用完成以后所请求的动作还将继续进行,暂时无法得知操作的完成情况,叫做异步。

阻塞/非阻塞:
当请求不能被立即接受时,若立即放弃此次请求并返回一个错误,叫做非阻塞;若一直等到请求可以被接受(或者有错误发生)再返回,叫做阻塞。

#14


还有1楼的解释只对于网络来说的,对于操作系统内核操作,也充满同步和异步操作,但是我见过的基本都是异步操作。同步操作的话可能会死人的,

#15


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

哦,那怎么我自己去打饭就算是同步了呢,你能再帮我说一下同步的概念吗,谢谢啦!

同步就是你(当前线程亲自做),阻塞和非阻塞发生在同步里,一个是你等的时候不能做别的得一门心思傻等,一个是你等的过程中可以做其他事,免得浪费时间。