gpt4 book ai didi

c# - 进程、线程和线程池

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:34 31 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




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

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

最佳答案

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

  • 最后,不是直接问而是:
  • 程序集是捆绑到单个文件中的代码集合,该单个文件可以具有运行多个 AppDomain 的代码或具有多个文件(想想 dll 和单个 exe)都在单个 AppDomain 中运行的代码。 Assemblies 和 Threads/AppDomains/Processes 之间没有关系(好吧 there is a relationship 在 AppDomains 和 Assemblies 之间,这就是它处理单独的静态变量的方式。但是,对于您关心的一切,没有关系)。
  • 关于c# - 进程、线程和线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19408293/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com