![](/img/trans.png)
[英]Can multiple threads run in parallel (not context switching) in multi core processor
[英]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同时发生”来挽救它。
当您的证明围绕两个区间 I 和 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.