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

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

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

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

单核 - 否

多核 - 是。

详情:Threads & Processes Vs MultiThreading & Multi-Core/MultiProcessor : How they are mapped?

运行多个线程同时的能力是生产多核处理器的原因。由于各种原因,单核CPU的效率越来越难提升。同时,你拥有的cores/processors个线程可以执行多少个线程。如果您有多个多核处理器,则最大并行线程数 运行 将为 num_cpus*cores_per_cpu。如果线程数超过可用核数,则交错执行。

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

综上所述,单个 CPU 核心上的多个线程可以并发执行。多个 CPU 核心上的多个线程可以并发或并行执行。

另请参阅此答案:Can multithreading be implemented on a single processor system?

...at the same time, the very same time, i mean ... at the same time of execution...

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

单词"at the same time"通常不会出现在关于并发的正式讨论中。

说到时间,有事件,它们是时间上不可分割的时刻,还有间隔。每个间隔都由其 开始事件 及其 结束事件 .

定义

每当您尝试证明某个系统的行为,并且您的证明围绕事件展开时,A 和 B 要么;

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

只有这些可能。如果你的证明将要失败,那么你将无法通过说 "A and B happen at the same time."

来挽救它

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

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

"Overlap" 是正式讨论中的首选词。所以,...

...两个或多个线程的执行可以 在单处理器系统上重叠 ,但在任何给定的时刻,单个 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