C#中的异步操作和线程

Tis*_*and 6 c# multithreading asynchronous

异步编程是一种在后台调用长时间运行的方法的技术,以便UI线程保持响应.它应该在调用Web服务或数据库查询或任何I/O绑定操作时使用.当异步方法完成时,它将结果返回给主线程.这样,程序的主线程不必等待I/O绑定操作的结果,并继续执行而不阻塞/冻结UI.还行吧.

据我所知,异步方法在后台工作线程上执行.运行时使线程池中的线程可用,或者它可以为其执行创建一个全新的线程.

但是我在许多帖子中都读过异步操作可以在单独的线程上执行,也可以不使用任何线程.现在我很困惑.

1)您能帮助澄清异步操作不会使用线程的情况吗?

2)处理器内核在异步操作中的作用是什么?

3)它与多线程有何不同?我知道多线程与计算绑定操作一起使用的一件事.

请帮忙.

Car*_*ten 5

IO(假设通过网络进行数据库操作)是所有三个的一个很好的例子:

  1. 你基本上只是注册一个回调操作系统最终会在IO操作完成时调用(可能是在一个新创建的线程上).没有线程坐着等待 - 复活将由硬件事件触发(或至少由OS进程触发,通常在用户空间之外)

  2. 它可能没有(见1)

  3. 在多线程中,你使用多个线程(你的后台线程)并且有一个人可能闲置在那里什么都不做(但是用尽了系统资源) - 如果你一些东西需要计算,这当然是不同的(所以线程不是空闲的等待外部结果) - 使用后台工作线程是有意义的