c++中的异步和同步机制

关于异步和同步到底什么意思?一开始时有人问起来,不解,后来自己总结资料,弄明白在这里给大家分享:

异步:发起请求后,不等待这个发起的请求返回任何响应就去先干别的事,当然最后是等待到这个返回呢还是不等呢?关键就是要看,是否真的返回,如果返回了,则接受,不返回,也不会一直等待,遇到main函数结束时,操作系统会结束并清理这个进程的所有资源和痕迹。

同步:相对于异步就是必须等到发起请求后返回的响应后,该请求后才能做别的事,这个方式看似很忠诚,就是这种。
 
举个同步和异步调用的例子:
比如你的程序调用了一个方法,这个方法要执行很长很长时间,而且这个时间都不确定,传统的办法就是“同步调用”,如下:

private int Func()
{
// 这个方法要执行很长时间,并且返回一个int的值。
}

private void A()
{
int n = Func();
textBox1.Text = n.ToString();
// 这里得到的n就是Func执行出来的结果,并且显示在textBox1中。
}

采用上述方法,可以叫做同步调用,很明显它有一个缺点:
Func方法执行的时间过长,程序会阻塞,并且无法继续执行其他的代码,给用户的体验就是整个程序都会僵着,打开任务管理器会提示该程序没有响应,用户以为程序死了,就会手动结束这个程序,


而异步调用就不一样,在调用完Func这个方法后,不必等待Func执行完,就可以执行其他的代码,直到Func执行完,才把结果返回,
如果Func提供了异步方法FuncAsync(),就可以这样调用:

private void A()
{
FuncAsync();
// 这里执行FuncAsync方法,并不会阻塞,程序会在后台执行完FuncAsync方法后,自动调用FuncCompleted方法,并且把结果传过去。
}

private void FuncCompleted(int n)
{
textBox1.Text = n.ToString();
// 参数n就是异步回调返回的结果,
}

 

原文出处:来自百度知道


                
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值