首页 新闻 会员 周边 捐助

线程,同步,异步

0
悬赏园豆:15 [已解决问题] 解决于 2014-08-14 22:37

现在在学习线程,产生些许疑问:

1。同步是否可看作依次执行?

2。异步可同时执行?

3。在实际项目中,哪些地方可以使用它们?

小熏的主页 小熏 | 初学一级 | 园豆:170
提问于:2014-07-24 19:47
< >
分享
最佳答案
1

同步:发出请求,等待执行完成,返回执行结果。如果执行时间较长,会阻塞。应用场景:必须等待执行完才能继续下一步的情况下。

异步:发出请求,直接返回,在另个线程执行。这个不会阻塞,但得到的回复并不是实际的执行结果,一般还需要在次去查询(或者主动通知)真正的执行结果。

例:买东西回家这个过程

同步:自己去商店买东西,交了钱,等待老板把货交给你,你收货,然后回家。

异步:自己去商店买东西,交了钱,告诉老板找到货后直接送到你家,你直接回家(但你不知道货啥时候能到)。 后来老板送货到家。

二者实现的结果都是货到家,差别就在于自己何时到家(或者说自己在家外耗费了多久)。

 

同步,异步一般应用在提供的API函数接口上。

同步接口以阻塞方式,直到任务完成,返回任务结果。

异步接口直接返回结果(一般表明已经收到任务命令,但还未执行),后续会以主动通知或者查询方式来通知任务是否完成。

同步,异步各有优缺点,看具体需求使用吧。

收获园豆:15
Kee_Chen | 菜鸟二级 |园豆:240 | 2014-08-08 17:29
其他回答(3)
1

同步和异步不能简单地区分是依次执行还是同时执行,这是你看上去的直观感受,是幻觉,也是错觉。建议回头看一下操作系统,先区分进程和线程,了解什么叫抢占式多任务操作系统,同步和异步概念是什么,异步和多线程有什么关系,再看看单核和多核CPU的工作原理,问题迎刃而解。

JeffWong | 园豆:2328 (老鸟四级) | 2014-07-24 20:47
0

同步就是1个线程知道另一个线程运行到哪里了.异步就是1个线程不知道另一个线程运行到哪里了.

这种以单独应用来学习一个知识点的方式个人认为非常不可取

吴瑞祥 | 园豆:29449 (高人七级) | 2014-07-25 08:34
0

学习线程你只要学习下winform开发就好了。。当你点击一下按钮,执行的东西很长时。。卡死在那,你就自然而然的会想到用线种去处理了。

路过秋天 | 园豆:4787 (老鸟四级) | 2014-07-25 08:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册