当前位置: 代码迷 >> J2SE >> 某一个时间施行一个线程
  详细解决方案

某一个时间施行一个线程

热度:5816   发布时间:2013-02-25 00:00:00.0
某一个时间执行一个线程?
大家好,我有几个问题,如下:
[1]

这个图是我任务管理器上‘性能’栏的截图,可以看到,分成了四个部分,分成四个部分代表什么意思呢?
我的电脑是双核的,为什么分成了四个部分呢?
[2] 一个单核CPU,某一个时间点,只有一个进程执行,对吗?
[3] 一个单核CPU,某一个时间点,有多个线程执行,对吗?
[4] 多线程技术为的是提高CPU使用率,而不是提高运算速度?
谢谢各位!
------最佳解决方案--------------------------------------------------------
[1] 代表每个处理单元的负载情况;估计你开启了超线程,那么双核CPU每个核会模拟出两个处理单元;
[2] 如果细分到CPU指令层面的话,是的;
[3] 如果细分到CPU指令层面的话,不是,仍然只有一个线程在执行;
[4] 这两个并无矛盾;如果你能把一个算法分到多个线程同步执行,然后再汇总结果的话,就能提高运算速度啊。

------其他解决方案--------------------------------------------------------
答:
(1)四个部分的每一部分表示一个CPU内核的使用情况。
(2)进程是一个程序在一个数据集合上动态执行的过程。进程是资源分配的基本单位,而线程是CPU调度的基本单位。严格地讲,操作系统调度某个进程中的一个线程占用CPU,而不是让一个进程占用CPU。
(3)某一个时间点,最多有一个线程在一个CPU内核上执行。操作系统以某种算法选择一个状态为“就绪”的线程占用CPU。一个进程中包含一个或多个线程,这些线程并发执行。在多CPU内核的机器上,一个进程的多个线程可以同时在不同的CPU内核上执行;在单核CPU的机器上,这些线程以操作系统的调度次序轮流占用CPU。
(4)线程可能在执行的过程中进入等待状态,比如等待从网络上接收数据、等待把数据写入外部存储设备。如果系统只有一个线程,CPU此时只能等待这些操作完成。在多线程环境中,当一个线程进入等待状态时,操作系统可以让另一个线程占用CPU,以提高CPU的使用率。
------其他解决方案--------------------------------------------------------
CPU同一时间点,肯定只能干一件事的
看上去你的CPU好像同时做了很多事,那是由于时间片轮的关系
------其他解决方案--------------------------------------------------------
如果你的电脑是单核的,那么在人和一个固定的时间点上,只能处理一个线程,其他线程等待CPU 的调动。 
多线程技术并一定能提高处理速度,运行速度与很多因素有关,举个简单的例子,即使你的CPU 处理速度超快,可是内存太小,不能跟上CPU 的运行速度,那也不会快。
------其他解决方案--------------------------------------------------------
双核四线程 i3啊

单核就是每个时间点只能单线程 实现多线程需要轮询时间片什么的 操作系统帮你搞定了 不用你管
多核心有几个每个时间点可以执行几个线程 实现超过核心数的线程也是轮询 这都是操作系统的事

你可以找本操作系统的书看看.
------其他解决方案--------------------------------------------------------
引用:
[1] 代表每个处理单元的负载情况;估计你开启了超线程,那么双核CPU每个核会模拟出两个处理单元;
[2] 如果细分到CPU指令层面的话,是的;
[3] 如果细分到CPU指令层面的话,不是,仍然只有一个线程在执行;
[4] 这两个并无矛盾;如果你能把一个算法分到多个线程同步执行,然后再汇总结果的话,就能提高运算速度啊。

第一个问题,如果电脑本身没有开启超线程,那么这个图就是两个部分了吧?表示两个核心?
------其他解决方案--------------------------------------------------------
引用:
第一个问题,如果电脑本身没有开启超线程,那么这个图就是两个部分了吧?表示两个核心?


是的,你可以去BIOS里面把 超线程(HT) 关闭掉,再进操作系统看看就非常清楚了。
  相关解决方案