0

我正在研究多线程 c# 教程,但我对进程和线程的全貌还不太了解。我知道线程在进程内,但不清楚究竟什么是进程?是一个类的实例,一个特定的方法,以及整个程序集文件,它是什么?当我看到 Lock 和 Mutex 之间的区别时,这个疑问就出来了。Mutex 类的定义是......“一种同步原语,也可用于进程间同步......”以及稍后...... Mutex 是一种同步原语,它仅将共享资源的独占访问权限授予一个线程,这让我有点困惑?我错了说 Mutex 同步来自不同进程的线程吗?

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

4

3 回答 3

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

最后,不是直接问而是:

  • 程序集是捆绑到单个文件中的代码集合,该单个文件可以具有运行多个 AppDomain 的代码或具有多个文件(想想 dll 和单个 exe)都在单个 AppDomain 中运行的代码。Assemblies 和 Threads/AppDomains/Processes 之间没有关系( AppDomains 和 Assemblies 之间存在关系,这就是它处理单独静态变量的方式。但是,对于您关心的一切,没有关系)。
于 2013-10-16T16:16:39.633 回答
1

进程是程序的内存实例。如果您多次运行记事本,您将在任务管理器下的进程中看到 Notepad.exe 的多个实例。

线程是一系列指令。单个进程可以并行执行多个线程。例如,在 MS Word 中,不同的线程可能负责拼写/语法检查、自动保存……以及处理 UI。

于 2013-10-16T16:13:08.100 回答
0

进程是您的应用程序将驻留在其中的操作系统级别的存储桶。

线程将包含在您的进程中,但主要由操作系统管理。

在这里阅读:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms684841 (v=vs.85).aspx

于 2013-10-16T16:10:19.347 回答