异步和同步术语

与编程有关的术语异步让我感到困惑。 在编程方面,它似乎与它在字典中定义的相反。 例如,单词同步意味着:

  • 同时发生; 时间一致 同期; 同时。

  • 以相同的速度继续并完全一致; 一起重复。

  • 然而,维基百科说:

    “在编程中, 异步事件是独立于主程序流而发生的异步事件, 异步事件是以非阻塞方式执行的事件,允许主程序流继续处理。”

    是不是“非阻塞”,并允许“主程序流程继续处理”,是同步还是“同时发生”? 似乎术语同步表示“非阻塞”和异步,“阻塞”。 为什么这些术语似乎在与编程有关时被用作反向使用,还是它与我不了解的底层计算有关?

    当我使用同步AJAX调用时,我执行以下操作...

    $.ajax({
      url: somefile.php,
      async: false,
      success: {
        ...code that gets run on success...
      }
    });
    
    ...code that gets run after the ajax-success code runs...
    

    有了它,在运行脚本的其余部分之前,它实际上会等待响应,这是一个阻止操作。 那么为什么这个术语是同步的,当它不与其他任何进程同步时,实际上却是相反的?


    事实上,这是这种情况之一,这个词的原始意思被颠覆,意味着与普遍使用的不同。

    电信中的“同步”意味着无论何时准备好接收信息,接收机都会发出信号,只有在此信号之后,发射机才会开始发射。 当发射机完成这个消息后,它会发出信号告诉它已经完成,这样接收机现在可以处理接收到的消息并做任何接下来应该做的事情。

    这当然是一个简化和一个非常广泛的问题,但它应该给你一个从'(a)同步'的意义来自JS的感觉。

    因此,JS中的同步请求实际上与程序的主流程同步。 程序向服务器发送请求('我准备好接收')并等待消息。 来自服务器的消息将具有明确定义的结束('消息在此结束 - 做你的工作')。 当收到它时,JS知道它可以继续执行程序。


    同步: - 每个任务连接并依赖于上一个任务

    异步: - 每个任务独立于他人。


    在问题的背景下Synchronous意味着两部分正在彼此等待。
    例如,如果您有一个客户端代码向服务器发出请求,并且您的代码在服务器响应到达之前不会继续处理,那么这意味着您的代码是同步的,即与服务器的响应同步。
    如果您的客户端代码发出请求,但不等待响应并继续进行处理,并且一旦来自服务器的请求响应到达,则您的代码(例如特定的处理程序)开始处理响应,然后处理异步的,即核心客户端处理与服务器的响应是非同步的。
    这些术语意味着缺乏依赖性,因为如果(使用客户端 - 服务器的示例)响应对于客户端继续其处理是强制性的,则不可能将同步代码转换为异步。

    是不是“非阻塞”,并允许“主程序流程继续处理”,是同步还是“同时发生”? 似乎术语同步表示“非阻塞”和异步,“阻塞”。

    对条款的错误解释。 这不是同步的程序流。 这是不同的部分,可能是(例如螺纹)或不能可能被同步或不相同的节目的一部分。

    链接地址: http://www.djcxy.com/p/50819.html

    上一篇: Asynchronous and Synchronous Terms

    下一篇: asynchronous vs non