例如,弹出(将鼠标指向标签的图标时)stackoverflow.com task-parallel-library tag的描述:
“The Task Parallel Library is part of .NET 4. It is a set of APIs tpo
enable developers to program multi-core shared memory processors”
这是否意味着使用早期版本的.NET无法实现多核d和并行编程应用程序?
我是否在.NET多线程应用程序中控制核心之间的多核/并行使用/分配?
如何识别要运行线程的核心并将线程归属到特定核心?
什么启用了.NET 4.0+ Task Parallel Library在以前版本的.NET中无法做到?
更新:
嗯,很难提出具体的问题,但我想更好地理解:
.NET在开发多线程应用程序和并行编程之间有什么区别?
到目前为止,我无法理解它们之间的区别
UPDATE2:
MSDN “Parallel Programming in the .NET Framework”从.NET 4.0版本开始,其文章Task Parallel Library告诉:
“Starting with the .NET Framework 4,the TPL is the preferred way to
write multithreaded and parallel code”
解决方法
“并行处理”将是:在多个线程之间拆分一组工作,以便可以并行处理工作.
因此,并行处理是多线程的一种特殊情况.
Does this mean that multi-core-d and parallel programming applications impossible using prior versions of .NET?
一点也不.你可以使用Thread类来完成它.写起来要困难得多,而且要难以理解.
Do I control a multicore/parallel usage/ditribution between cores in .NET multithreaded application?
不是真的,但你不需要.您可以为应用程序处理器处理器关联性,但在.NET级别,这几乎不是一个成功的策略.
任务并行库包括一个“分区器”概念,可用于控制工作分配,这是一种更好的解决方案,可以控制线程在核心上的分布.
How can I identify a core on which a thread to be run and attribute a thread to a specific core?
你不应该这样做. .NET线程不一定与OS线程对应;你处于比这更高的抽象层次.现在,默认的.NET主机确实将线程1对1映射,因此如果您想依赖于未记录的实现细节,那么您可以查看抽象并使用P / invoke来确定/驱动您的处理器关联.但如上所述,它没用.
What has the .NET 4.0+ Task Parallel Library enabled that was impossible to do in prevIoUs versions of .NET?
没有.但它确实使并行处理(和多线程)变得更加容易!
Can you give me hints how to specifically create parallel code in pre-.NET4 (in .NET3.5),taking into account that I am familiar with multi-threading development?
首先,没有理由为该平台开发.没有. .NET 4.5已经发布,最后一个版本(.NET 4.0)支持下一个旧版本(.NET 3.5)所做的所有操作系统.
但是如果你真的想要,可以通过旋转Thread对象或BackgroundWorkers,或者通过将工作直接排队到线程池来进行简单的并行处理.所有这些方法都需要比TPL中的Task类型更多的代码(特别是在错误处理方面).