基础-线程-同步、异步和多线程

1.      同步与异步

无论是线程还是进程,都存在同步和异步的概念。好比一个事情分几个步骤,同步就是一个步骤一个步骤去做,上一个步骤做完再做下一个步骤,有点顺序执行的意思。而异步呢,就类似于可以并行执行几个步骤,最后返还给调用方。说到并行,这里涉及到为啥要分叉?从哪开始分叉的?又怎么样归到一起的问题?

 
1.1解决疑问(涉及到为啥要分叉?从哪开始分叉的?)

这涉及到同步和异步的区别这个根本概念。或者说本身同步用的好好的,怎么突然想起用异步了呢?

程序执行的时候,我们通常会关心效率(时间、资源分配等)。同步执行如果遇到哪个步骤比较慢(如要调用远端的数据库),这时候,同步就得一直等着这个数据库的结果回来(阻塞),显然这是十分浪费资源的,对有碍这个方法被更多的调用,因为资源一直被占着,短时间内不释放。而异步是可以怎么解决这个问题的呢?异步一般会把这个调用数据库的操作拿出主流程去异步调用,然后我主流程继续走,等你返回结果的时候,通知主流程,这样我们就不用眼巴巴的一直阻塞在那里等着数据库的调用结果了。即:同步是阻塞模式,异步是非阻塞模式。

 

1.2解决疑问(怎么归到一起的问题?)

分开之后,主流程继续走,那我分叉的那个调数据库的完成了我怎么找到主流程呢?这就不得不说异步中最为关键的回调函数了。回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。

 

2.      异步与多线程

前面我们说了,异步是要分叉的,通常就涉及到多线程的操作,然而,异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或多进程技术。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值