并行编程和异步编程有什么不同?
我知道异步编程用于在后台线程/工作线程中执行工作,或者等待I/O之类的事情完成。
*并行的任务是否也可以是异步的任务?
*异步中的任务可以并行完成吗?
对我来说有点困惑。
上面有什么例子吗?
发布于 2011-08-02 18:32:37
多线程、多进程和异步编程都是并发技术,通过这些技术,您可以在单个程序中同时完成多项工作。如果你只有一个处理器/机器,这些都不是真正的“并行”。它们都只是对一些代码的执行进行流水线处理,这样你就会“感觉”它们都在一起执行。
前两个依赖于CPU切换任务。你只需以某种方式告诉计算机,这些就是你想要完成的事情,然后让它决定如何将时间和其他资源分配给各种任务。我们将在这里掩饰线程和进程之间的区别。
异步编程意味着您的应用程序控制您希望完成的这些任务的切换。一个粗略的例子是当有2个I/O通道需要读/写时。您的应用程序可以将数据发送到1,直到2上有可用的数据。当它发生时,它会从% 2读出数据,然后恢复发送到%1,然后切换到向%2发送数据。其思路是,等到有一些事件需要服务时,再根据可用性和需要在事件之间切换。从某种意义上说,您正在使用这些类型的应用程序手动执行进程调度。一个优点是不存在与多个进程/线程相关的系统开销。许多异步例程都依赖于select系统调用。
https://stackoverflow.com/questions/6910553
复制相似问题