Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 异步方法是如何实现的_Multithreading_Asynchronous - Fatal编程技术网

Multithreading 异步方法是如何实现的

Multithreading 异步方法是如何实现的,multithreading,asynchronous,Multithreading,Asynchronous,老实说,我在网上找不到这个看似简单的问题的答案 异步方法是如何实现的?它是否涉及每次调用该方法时创建一个线程,或者是否有更专门的操作系统服务 我知道大多数编程语言都有内置的功能(例如async关键字),但我想问一下所使用的底层操作系统功能。除了基本的多线程功能外,异步方法没有特殊的操作系统功能。一个方法是异步的,这意味着调用方无需等待该方法完成即可继续。有时,调用方提供回调函数来通知方法何时完成 根据编程语言的不同,在编写异步方法时,可能需要自己编写线程处理。例如,异步方法可能会产生一个新线程来

老实说,我在网上找不到这个看似简单的问题的答案

异步方法是如何实现的?它是否涉及每次调用该方法时创建一个线程,或者是否有更专门的操作系统服务


我知道大多数编程语言都有内置的功能(例如
async
关键字),但我想问一下所使用的底层操作系统功能。

除了基本的多线程功能外,异步方法没有特殊的操作系统功能。一个方法是异步的,这意味着调用方无需等待该方法完成即可继续。有时,调用方提供回调函数来通知方法何时完成


根据编程语言的不同,在编写异步方法时,可能需要自己编写线程处理。例如,异步方法可能会产生一个新线程来处理请求,或者它可能会对请求进行排队,而一个或多个其他线程可能会对请求进行出列并处理它们。请注意,“异步”方法实际上涉及一小段同步代码,在本例中是生成新线程或将请求排队,主任务通常在另一个线程中异步执行。

通常异步操作由cpu调度程序处理。除此之外发生的一切完全取决于您使用的系统。并发方法通常会在不同的线程上运行,操作系统知道如何将这些线程传递给处理运行这些线程的调度程序。计算机上的事情并不是真正的异步,它只是cpu调度程序在这里运行一个片段,暂停它,然后在那里运行一个片段,暂停它,等等。它发生得如此之快,以至于对我们来说似乎是异步的