php支付宝同步跟异步优点跟缺点,异步执行与同步执行,这到底意味着什么?

同步/异步与多线程无关。

同步,或同步意思是“连接”,或“依赖”在某种程度上。换句话说,两个同步任务必须彼此了解,一个任务必须以依赖于另一个任务的方式执行,例如等到另一个任务完成后才开始。

异步意味着它们是完全独立的,无论是在初始化还是在执行中,两者都不能以任何方式考虑另一个。

同步(一个线程):

1 thread ->   ||||||

同步(多线程):

thread A -> ||

\

thread B ------------>   ->||

\

thread C ---------------------------------->   ->||

异步(一个线程):

A-Start ------------------------------------------ A-End

| B-Start -----------------------------------------|--- B-End

|    |      C-Start ------------------- C-End      |      |

|    |       |                           |         |      |

V    V       V                           V         V      V

1 thread->||---A---->|--B-->|

异步(多线程):

thread A ->     ||

thread B ----->     ||

thread C --------->     ||

任务A、B、C的起点和终点人物。

用竖直条表示的CPU时间片|

从技术上讲,同步/异步的概念真的与线程无关。虽然在一般情况下,发现异步任务运行在同一个线程上是不寻常的,但它是可能的(参见下面的示例),而且它是共同查找两个或多个任务同步执行的步骤分开线.。不,同步/异步的概念独树一帜是否可以在其他(第一个)任务完成之前启动第二个或后续任务,或者是否必须等待。仅此而已。在哪些线程(或多个线程)、进程、CPU,或者确切地说,任务是在什么硬件上执行的任务是无关的。事实上,为了说明这一点,我编辑了图形以显示这一点。

异步示例。在解决许多工程问题时,软件被设计成将整个问题分成多个单独的任务,然后异步执行。反演矩阵或有限元分析问题是一个很好的例子。在计算中,列表排序就是一个例子。例如,快速排序例程将列表分成两个列表,并通过递归调用自己对每个列表进行排序。在上述两个示例中,这两个任务可以(而且经常是)异步执行。它们不需要放在单独的线程上。即使是只有一个CPU的机器,也只能编码一个执行线程,以便在第一个任务完成之前启动第二个任务的处理。唯一的标准是一个任务的结果不需要作为另一个任务的输入。。只要任务的开始时间和结束时间重叠(只有当两个任务的输出都不需要作为另一个任务的输入时才有可能),无论使用多少线程,它们都是异步执行的。

同步示例。任何由多个任务组成的进程,其中的任务必须按顺序执行,但必须在另一台机器上执行(获取和/或更新数据,从金融服务获取股票报价等)。如果它位于一个单独的机器上,那么它就位于一个单独的线程上,无论是同步线程还是异步线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值