我有软件(非常大的循环),必须以一定的顺序运行,所以我不能使用多线程,我试图与parallel.for一起工作,并且由于它不以正确的顺序工作,所以造成了很多问题。我唯一想到的解决方案是在2或4个cpu内核上使用我的1个线程。有可能运行1线程在多个1 cpu核心与C#?使用我的1线程2或4个CPU核心C#没有parallel.for?
0
A
回答
6
简答题。 NO
每个线程都有自己的CPU /核心上下工夫。如果你想在2+ CPU /核心上工作,你需要2+线程。线程可以切换核心,例如,处于等待状态,然后在另一个核心上恢复,但不能同时在两个核心上运行...
如果您向我们展示了您究竟想达到什么,我们可能会帮助您,但截至目前没有什么我可以告诉你的了。
-1
这真的取决于你的情况。
在并行编程中,他们称之为“并行”或类似的东西。
如果您的以下进程完全取决于你之前的结果, 你不能做到这一点。
但也许你可以把它分解成几块。
对不起理解你的问题。
对于线程vs核心。我会说,一个核心可能会有很多线索。
这真的取决于你的工作类型,
如果你的工作是很容易计算
但需要等待一些其他的事情 你可以在一个核心做多线程没有问题。 例如
1,轻松处理数据, 2,将数据发送到另一台服务器 3,等待获取服务器响应。 4,易加工
,如果你的工作是繁重的计算,可能唯一的工作你的机器上,甚至只在CPU。
那么这可能不是一个很好的理想更多的线程。
但你可以做测试找出。
同样,作为一个提到的,如果你的数据/工作真的取决于前面的结果,你不能这样做并行。
0
使用串联执行的多个内核将没有好处。
不过,如果你只需要保持结果的排序,然后再看ParallelEnumerable.AsOrdered
。
例子:
var yourResults = yourList.AsParallel().AsOrdered().Select(DoProcessSingle);
DoProcessSingle
可以称为以任何顺序,但它返回的结果会以相同的顺序,如果你在系列做了,即:
var yourResults = yourList.Select(DoProcessSingle);
相关问题
- 1. Parallel.For,最大线程和核心
- 2. 双核超线程:我应该使用4个线程还是3或2?
- 3. 每个JVM或每个CPU核心的线程数
- 4. 每个核心1个线程,而不是Debian 8上的2个线程
- 5. 在具有4个双核Cpu的服务器上使用1-8个线程的程序定时问题?
- 6. 找到瓶颈。 Ffmpeg不使用4核心8线程CPU的800%。为什么?
- 7. CPU核心线程分类功能
- 8. SPARC CPU VS线程VS核心
- 9. Linux内核线程在CPU硬件线程上映射1:1或m:n吗?
- 10. Parallel.For/Foreach线程重用C#
- 11. 发现使用线程的CPU核心数量
- 12. 如何获得超过2个核心的CPU使用率?
- 13. 如何在4核CPU上执行相同的计算:4个线程或50个线程?
- 14. 如何让clisp或sbcl使用所有cpu核心可用?
- 15. unix中C++的多核心CPU使用教程
- 16. vowpal wabbit可以使用我所有的CPU核心吗?
- 17. C#多线程没有使用足够的CPU
- 18. RcppArmadillo在几个CPU核心
- 19. 衡量一个进程独立的CPU核心使用情况?
- 20. 更多的线程,即使有足够的CPU核心,速度也会变慢
- 21. perl fork()似乎没有利用核心,但只有cpu
- 22. parallel.for或task.startnew在多线程进程
- 23. 核心数据设计:更好的1个模型有2个商店或2个模型和2个商店?
- 24. 多核CPU单线程的行为,没有达到100%
- 25. VCBuild使用超过4个核心
- 26. 没有核心的OCaml没用或没有?
- 27. 利用多个CPU核心和Tensorflow
- 28. 关闭多线程或限制F#中的核心使用率?
- 29. OpenMP线程在相同的CPU核心上执行
- 30. 将线程分配给特定的CPU核心
您可以让线程在内核间反弹,但不能让它一次在多个内核上运行。你试图做的事听起来不可能。 – 2015-02-10 13:09:15
“必须以特定顺序运行”有关您为什么不能按顺序执行的更多详细信息。 – weston 2015-02-10 14:55:36