Multithreading 任务并行库混合了多线程和单线程.net 4
我正在使用tpl以多线程方式处理数千个文件。一切都很好 然而,应用程序的某些部分我必须单线程处理这些文件 设置maxdegreeParallelism=1意味着1个线程x核心是否正确 当你没有你的并行性,你有4个核心,它仍然使用1线程x核心 问题是,tpl为您做了很多艰苦的工作,而且不太熟悉线程也没有帮助 底线我需要确保maxdegreeParallelism=1是单线程的 很抱歉这个愚蠢的问题,但通过谷歌搜索无法找到一个直接的答案。除了并发操作之外,没有提到CPU核心。 这意味着,设置为1等于总共1个线程。虽然这是一个不同的线程比CallingRead 看 不可以。设置“maxDegreeParallelism”时,每个核心不一定运行一个线程。它有不同的含义。它限制了在整个并行操作中完成的并行任务的数量。如果将其设置为1,基本上会使并行方法无效 TPL在线程池上调度任务。任务调度完成后,线程池将决定如何在线程、内核和处理器之间分配要完成的所有任务。这是基于某些试探法,如虚拟地址空间、当前处于阻塞状态的线程数等Multithreading 任务并行库混合了多线程和单线程.net 4,multithreading,c#-4.0,task-parallel-library,Multithreading,C# 4.0,Task Parallel Library,我正在使用tpl以多线程方式处理数千个文件。一切都很好 然而,应用程序的某些部分我必须单线程处理这些文件 设置maxdegreeParallelism=1意味着1个线程x核心是否正确 当你没有你的并行性,你有4个核心,它仍然使用1线程x核心 问题是,tpl为您做了很多艰苦的工作,而且不太熟悉线程也没有帮助 底线我需要确保maxdegreeParallelism=1是单线程的 很抱歉这个愚蠢的问题,但通过谷歌搜索无法找到一个直接的答案。除了并发操作之外,没有提到CPU核心。 这意味着,设置为1等于
现在,如果您的意思是应用程序中有一部分任务应该以顺序形式完成,那么有一些方法可以实现这一点。看看ContinueWith。您可以通过澄清您正在使用的类型,以及您正在将maxdegreeParallelism=1设置为on来改进您的问题。您好,我已经完全放弃了回复。谢谢你的时间。让我来纠正一下。设置MaxDegreeParallelism=1,它实际上会运行单线程,正如你所说的,它会使TPL变得无用。在某种程度上,这实现了我想在短期内做的事情,直到我读到更多关于ContinueWith的内容。你是说使用ContinueWith我可以并行执行一些部分和顺序执行一些部分吗?有任何例子吗?你对问题的定义可能过于笼统,无法给出正确的回答,但是是的。使用“ContinueWith”,您可以对一组任务进行排队,然后在完成所有以前的并行任务后,让程序继续执行另一个任务。请看一个例子。您好,谢谢您的回复。您说的是1将运行一个线程,无论您有多少CPU,但不是在主线程上,而是在后台线程上。这就是您所说的吗?是的,尽管它与CallingRead不同。