我很困惑,但是下面的讨论解决了我的疑惑:
但它从硬件角度回答了问题。我想知道这些硬件特性如何映射到软件上?
一个显而易见的事情是,MultiProcessor(= Mutlicpu)和MultiCore之间没有区别,除了在多核系统中,所有CPU都驻留在一个芯片(Die)上,而在Multiprocessor中,所有CPU都在自己的芯片上,并相互连接。
因此,mutlicore/multiprocessor系统能够同时执行多个进程(火狐浏览器、mediaplayer、googletalk)(与在单处理器系统上进行上下文切换不同)。对吗?
如果正确,到目前为止我就清楚了。但当多线程出现时,就会产生困惑。
多线程是用于并行处理的。对吗?
在 CPU 内部,哪些元素涉及到多线程?有没有图示?为了利用两个独立任务的并行处理能力,CPU 需要满足什么要求?
当人们说线程的上下文切换时,我不太明白。因为如果是线程的上下文切换,那就不是并行处理了。线程必须“严格同时”执行。对吗?
我对多线程的理解是: 考虑一个只有单个 CPU 的系统。当进程上下文切换到 Firefox(假设)时,Firefox 中的每个选项卡都是一个线程,并且所有线程都在严格同时执行。不像一个线程执行了一段时间,然后另一个线程再执行,直到到达上下文切换时间。
如果我在无法处理线程的处理器上运行多线程软件会发生什么?我的意思是,CPU 如何处理这样的软件?
如果一切顺利,现在的问题是:有多少个线程?我猜这必须受硬件的限制,对吗?如果硬件只支持 2 个线程,而我启动 10 个线程在我的进程中,CPU 会如何处理它?优缺点是什么?从软件工程的角度考虑,当开发将由用户在各种系统中使用的软件时,我该如何决定是否采用多线程?如果是,要有多少个线程?