进程,线程和ThreadPool

Max*_*cci 1 c# multithreading process threadpool

我正在研究一个MultiThreading c#教程,我还没有完全理解有关进程和线程的整个图片.我已经明白线程在这个过程中,但不清楚什么是一个过程?是类的实例,特定方法和整个程序集文件,它是什么?当我看到Lock和Mutex之间的区别时,这个疑问就出现了.Mutex类的定义是......"一个同步原语,也可以用于进程间同步......"以及后来...... Mutex是一个同步原语,它只允许对一个线程的共享资源进行独占访问,这让我有点困惑?我说错了是因为Mutex会同步来自不同进程的线程吗?

关于ThreadPool,定义是......"线程池是一组线程,可用于在后台执行多个任务...."这个线程集合来自不同进程的相同进程或线程?

Sco*_*ain 9

  • 进程是AppDomain的集合.99%的程序只有1个AppDomain
  • AppDomain是线程和静态变量的集合
  • 线程是执行一系列指令(您的代码)的东西,您可能在AppDomain中同时运行多个指令系列(多个线程)
  • ThreadPool只是一个用于短期任务的线程集合,它们在完成后被回收而不是被"删除",因为它对系统资源的负担较小.
  • Mutex用于确保两个线程(来自任何进程)不同时使用共享资源,如果该资源未被编程为处理同时访问它的多个线程.这可以通过等待另一个人完成然后继续(这称为阻塞)或者根本不执行操作来实现.
  • 锁就像一个"简单的互斥锁",它只能"等到另一个人完成"的方法.它更易于使用,但仅适用于单个AppDomain,因此它不提供跨AppDomain或跨进程保护.

最后,没有直接问,但:

  • 程序集是捆绑在单个文件中的代码集合,该单个文件可以具有运行多个AppDomain的代码,或者具有多个文件(想想dll和单个exe),这些代码都运行在单个AppDomain中.程序集和线程/ AppDomains /进程之间没有任何关系(AppDomains和程序集之间存在关系,即它如何处理单独的静态变量.但是,对于您关心的所有内容,没有任何关系).