多线程与异步-异步调用与多线程的区别

  • 多线程与异步-什么是线程安全?
  • 多线程与异步-C# 如何使用线程
  • 多线程与异步-关于让线程“等等”有关的几个方法
  • 多线程与异步-将参数传入线程的三种方法
  • 多线程与异步-C# 异步调用
  • 多线程与异步-异步调用与多线程的区别
  • 多线程与异步-异步调用 Web Service
  • 多线程与异步-Task.Run、await、async 以异步方式执行

从目的上来说,二者都是一样的;从代码上来说,简单的异步和多线程中,异步代码要复杂得多;但是本文从原理上来说。

异步调用是线程池(System.Threading.ThreadPool)中执行

线程池有什么优点呢?我们看多线程先,每创建一个子线程,就需要创建、销毁工作,这些工作浪费了时间,当子线程多的时候,这种浪费现象就很严重。

线程池的出现就解决了这个问题,他事先就创建好了线程,放在那里,然后谁要用就来用,用完了也不销毁,而是等到应用程序退出的时候才销毁,可以看出这节约了创建、销毁线程的时间。

怎么样,和我们的数据库连接池(可在控制面板->管理工具->数据源中找到)是不是类似?顺便说一句,ASP 中把数据库连接放入 Application 中实在没有必要,Windows 已经配置好了常用数据库的连接池的嘛,自动生效的。

不过

托管线程池中的线程都是后台线程;而多线程创建的线程可以是后台线程,也可以是前台线程(默认是前台线程)。

  • 多线程与异步-什么是线程安全?
  • 多线程与异步-C# 如何使用线程
  • 多线程与异步-关于让线程“等等”有关的几个方法
  • 多线程与异步-将参数传入线程的三种方法
  • 多线程与异步-C# 异步调用
  • 多线程与异步-异步调用与多线程的区别
  • 多线程与异步-异步调用 Web Service
  • 多线程与异步-Task.Run、await、async 以异步方式执行

你可能感兴趣的