繁体   English   中英

任何计算机(多核或单核)是否可以同时运行多个线程

[英]Can any computer (multi or single core) run many threads at the same time

我有一个简单但不简单的问题

任何计算机(多核或单核)都可以同时运行多个线程,同时,我的意思是两个或多个线程同时运行吗?

在同一时间运行多个线程的能力就是正在生产多核处理器的原因。 由于种种原因,提高单核CPU的效率变得越来越困难。 同时,可以执行与您拥有的内核/处理器数量一样多的线程。 如果您有多个多核处理器,并行运行的最大线程数将为 num_cpus*cores_per_cpu。 如果线程数超过可用内核数,它们将交错执行。

单核 - 否

多核 - 是的。

有关详细信息: 线程和进程与多线程和多核/多处理器:它们是如何映射的?

您可以在您的环境中创建多个线程,并让单个 CPU 内核执行这些线程。 但是,它们的执行将不是并行的,而只是并发的。 换句话说,CPU 将首先执行一个线程(部分或全部),然后执行另一个线程。 如果第一个线程上还有工作,那么它可能会再次返回到第一个线程并执行更多指令。 线程因此同时进行 如果线程在多个 CPU 内核上执行那么它们可以同时执行这意味着它们是并行执行的。

总之,单个 CPU 内核上的多个线程可以并发执行。 多个 CPU 内核上的多个线程可以并发或并行执行。

另请参阅此答案: 能否在单处理器系统上实现多线程?

......同时,在同一时间,我的意思是......在执行的同时......

听起来您正在努力寻找一种正式的提问方式。

“同时”这个词通常不会出现在关于并发的正式讨论中。

当你谈论时间时,有些事件是不可分割的时刻,然后是间隔 每个间隔由其开始事件结束事件定义

每当你试图证明某个系统的行为时,你的证明都围绕着事件展开,然后 A 和 B 要么;

  • 你知道或可以证明 A 在 B 之前发生,
  • 你知道或可以证明 B 发生在 A 之前,
  • 你的证明不取决于它们发生的顺序,或者
  • 你的证明会失败。

这些是唯一的可能性。 如果您的证明将失败,那么您将无法通过说“A 和 B同时发生”来挽救它。

当您的证明围绕两个区间 I 和 J 进行时,则要么;

  • 你知道或可以证明我在 J 开始之前完成,或者
  • 你知道或可以证明 J 在我开始之前完成,或者
  • 这两个区间重叠

“重叠”是正式讨论中的首选词。 所以,...

...两个或多个线程的执行可以在单处理器系统上重叠,但在任何给定的时刻,单个 CPU 将仅代表其中一个线程工作。

您必须首先了解自己的 CPU 功能。

使用这些来了解您的 CPU 可以处理多少进程。

1. lscpu 
2. cat /proc/sys/kernel/threads-max
3. cat /proc/sys/kernel/pid_max
4. htop
5. top
6. cat /proc/cpuinfo
7. ulimit -a
8. ps -aeF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM