我正在使用tpl以多线程方式处理数千个文件。很好。
但是,应用程序的某些部分我必须处理这些文件的单线程。
设置maxdegreeParallelism = 1表示1个线程x核心是否正确?
当你没有并行性并且你有4个核心时它仍然使用1个线程x核心吗?
问题是tpl为你做了很多艰苦的工作,而且对线程也不是很熟悉也无济于事。
底线我需要确保maxdegreeParallelism = 1是单线程的
很抱歉愚蠢的问题,但谷歌搜索无法找到答案。
答案 0 :(得分:0)
Documentation没有说到CPU-Cores,而是并发操作。 所以这意味着,设置为1总共等于1个线程。虽然它与调用线程不同。
答案 1 :(得分:0)
请参阅here。
没有。当你设置`MaxDegreePrallelism"时,并非每个核心运行一个线程的情况。它有不同的含义。它限制了在整个并行操作中完成的并行任务的数量。如果将其设置为1,则基本上会使您的并行方法无效。
TPL在线程池上安排任务。一旦任务被调度,线程池就决定如何在线程,内核和处理器之间分配所有要完成的任务。这是基于某些启发式方法,如虚拟地址空间,当前处于阻塞状态的线程数等。
现在,如果您的意思是应用程序的一部分应该以顺序形式完成任务,那么有很多方法可以实现。看看ContinueWith
。