首页新闻找找看学习计划

多线程与并行的区别?

-2
悬赏园豆:100 [待解决问题]

刚查了一下并行是将问题分解交给不同的CPU内核去处理。

而多线程是串行,使用时间分片。

多线程在多核CPU与并行计算在多核CPU的处理方式有什么异同呢?

学历史的人的主页 学历史的人 | 初学一级 | 园豆:100
提问于:2011-11-10 11:41
< >
分享
所有回答(8)
0

很明显并行比多线程具有更高的CPU利用率,因此效率相对更高。来自MSDN:(TPL - Task Parallel Library)

The TPL scales the degree of concurrency dynamically to most efficiently use all the processors that are available. In addition, the TPL handles the partitioning of the work, the scheduling of threads on the ThreadPool, cancellation support, state management, and other low-level details. By using TPL, you can maximize the performance of your code while focusing on the work that your program is designed to accomplish.

从MSDN的解释可以看出,TPL也包含了将task分配到多线程的过程,但是它比MT多了更多细节的东西,比如分解work,状态管理,取消机制和更多的low-level details,这些都是简单的多线程做不到的(除非你自己实现这一套类似的东西)。更详细的关于TPL的机制,可以参照这篇文章


水牛刀刀 | 园豆:6350 (大侠五级) | 2011-11-10 11:56
0

你自己不都已经说清楚了么?多线程说到底还是顺序执行两个程序而已,也就是说到头来在一个时刻,还是cpu只能处理一条指令,但是并行的话,就是多个cpu核心,比如说是双核,那么并行的时候就是一个时刻可以同时处理两条指令。。。

顾晓北 | 园豆:9534 (大侠五级) | 2011-11-10 16:09

比如说四核CPU中多线程的任务是在一个时间片内 四个核心同时处理吗。还是分给一个核心处理?

并行处理是将任务分解后分别到四个核心分别去处理,四个核心中的某一个核在处理时还会进行时间分片吗?

支持(0) 反对(0) 学历史的人 | 园豆:100 (初学一级) | 2011-11-11 08:57

他说的关键是操作系统的处理吧,即使你是多线程,操作系统也会将各个线程调度到几个核心去处理啊,并非只有并行才能够使用到多个核心吧

支持(0) 反对(0) FengLin | 园豆:200 (初学一级) | 2013-06-09 17:00
0

LZ您所说的已经很明白了啊,并行是利用CPU的多个核进行计算。而多线程是利用,CPU一个核在不同时间段内进行计算。

[CC] | 园豆:61 (初学一级) | 2011-11-11 08:44
0

并行:是将一个超达的计算任务,分成多个部分同时进行计算后合并,做的是同一件事。多线程:同时做不同的事。CPU越多,多线程池允许的数量越多!

个人知识管理 | 园豆:198 (初学一级) | 2011-11-11 12:34
0

答:多线程在多核CPU与并行计算在多核CPU的处理方式相比较,有以下几种情况:

 

场景

多线程计算

并行计算

结果

A

绑定到CPU

多进程并行

并行计算胜

B

绑定到CPU

多线程并行

并行计算如果未绑定到CPU,则胜。否则平手。

C

未绑定到CPU

多进程并行

多线程计算胜

D

未绑定到CPU

多线程并行

并行计算如果绑定到CPU,则败。否则平手。

James Leng | 园豆:230 (菜鸟二级) | 2011-11-12 21:17
-1

应该没有本质区别吧。多线程在多核下也是并行处理的。并行是利用多线程做同时处理。

并行可能增加了一些任务分配机制,应该是在多线程上面又封装了一层。

并行的工作用多线程都可以做,只是开发的工作量大一些

五星 | 园豆:125 (初学一级) | 2011-11-16 18:17
2

多线程,AB两人要挖坑,但是只有一把铁锹,所以铁锹给A用五分钟,然后再给B用5分钟,然后再给A,。。。。如此往复

并行,AB两人要挖坑,你有两把铁锹,一人一把开始挖

Lukexywang | 园豆:178 (初学一级) | 2011-12-22 21:56
0

多个线程是一个处理器处理多个任务 

好像有一片文章说的挺形象的   多线程或者并发  一个人吃多个馒头

                                      并行啊   n个馒头n个人吃

havid | 园豆:70 (初学一级) | 2012-02-20 14:43

很形象,但是。你有什么证据说明多线程就一定在某个特定的CPU上执行呢。。。

支持(0) 反对(0) SoarNo1 | 园豆:193 (初学一级) | 2013-01-15 14:06

这样的理解误导你了

支持(0) 反对(0) FengLin | 园豆:200 (初学一级) | 2013-06-09 17:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册