让用户选择他希望程序使用多少线程我想创建一个程序,读取.txt文件的每一行并对每一行做一些事情。我希望用户能够选择线程,所以如果他选择例如10个线程,那么程序将能够同时在10行上执行某些操作。假设文本文件包含例如1000000行,我应该怎么办?这就是我实际一一阅读的方式:varlines=File.ReadLines(accounts);foreach(varlineinlines){//启动一个线程,但如果用户输入为10,则最多同时启动10个线程。}多谢。您无法绝对控制线程数。使用的数量取决于可用数量和其他因素。但是您可以通过指定要使用的最大线程数来限制线程数。使用Parallel.ForEach:varoptions=newParallelOptions{MaxDegreeOfParallelism=5};Parallel.ForEach(lines,options,line=>{//对每一行做一些事情});MaxDegreeOfParallelism并不能说明全部情况。它只是限制线程数。使用的线程来自托管线程池。可以使用ThreadPool.SetMinThreads和ThreadPool.SetMaxThreads设置可用于启动新任务的ThreadPool.SetMaxThreads。但这还不能说明全部。可以执行的并发操作数受CPU内核数的限制。它还取决于这些操作的作用。例如,无论您运行多少个线程,它们都不能同时写入磁盘。增加线程数超过某个点可能会降低性能。因此,虽然试验很有趣,但在大多数情况下,程序的用户不太可能知道应该同时运行多少线程。这只是实现多线程的一种方式。当您有一个IEnumerable(如从文件中读取的行数组)并希望并行执行它们时,Parellel.ForEach是一个方便的方法。另一个需要考虑的因素是,当您并行执行操作时,您无法保证它们的执行顺序。它们可能看起来运行FIFO,但你会再次运行它们而不是。Parallel.ForEach将在其自己的线程中运行每个循环实例,并且还允许您将MaxDegreeOfParallelism(线程数)设置为您想要的任何值。以上就是C#学习教程:让用户选择他希望程序使用多少个线程来共享所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—Parallel.ForEach(lines,newParallelOptions{MaxDegreeOfParallelism=10},line=>{//dostuffwithline});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
