c# - 多线程在不同进程或同一进程上运行?

标签 c# multithreading process

在我的.net多线程程序中,我想知道所有这些线程都在同一进程或不同进程上运行? 如果它在同一个进程上,那么我假设一个进程在一个核心上运行,那么多线程如何利用我的四核CPU中的所有四个核心? 但如果它是在不同的进程上,因为我知道不同的进程和相同的进程有不同的数据共享机制,那么为什么我不需要编写不同的代码来在我的多线程程序中处理这个问题?有人能透露一下吗

我想再问两个类似的问题

当我打开任务管理器时,很多时候我可以看到大约 800 个线程和 54 个进程,而我的 cpu 使用率只有 5%,而且我被告知每个核心一次只执行一个线程。 我的CPU是一直运行这800个线程,还是仅仅意味着800个线程正在排队,等待CPU处理? 如果我希望我的多线程程序充分利用我的四核CPU,我可以通过创建更多线程来提高CPU使用率(这似乎与一次只有一个线程一个核心的理论相矛盾)

最佳答案

多线程是指同一进程中有多个线程。
每个线程可以分配给不同的核心。

但是所有线程都属于同一个进程,例如,如果其中一个线程抛出未处理的异常,则该进程及其所有线程都会崩溃。

您可能已经阅读了一些相关内容,只需搜索 google 或 Wikipedia - Software Multithreading

关于c# - 多线程在不同进程或同一进程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803933/

相关文章:

python - 将args线程化到给定错误的许多参数?

python - python中的多处理不会停止运行

Java - 在什么情况下 JVM 可能会突然崩溃?

c# - 获取代码以在控制台的一行上输出

c# - 无法从列表 <keyvaluepair> 中检索数据

c# - 密码验证的正则表达式 C#

python - 在 Python 中监控进程?

c# - 如何在继承中授予对选择性类方法的访问权限?

ios - AFNetworking 究竟是如何工作的?

java - 为什么我的代码在不使用同步的情况下可以完美运行..?