有没有办法重用#include <stdio.h>
#include <dirent.h>
int main()
{
DIR* proc = opendir("/proc");
struct dirent* ent;
int count = 0;
if(proc == NULL) {
perror("opendir(/proc)");
return 1;
}
while(ent = readdir(proc)) {
if(!isdigit(*ent->d_name))
continue;
count++; //if directory name is number then increment the count.
}
closedir(proc);
printf("Number of Processes=%d\n",count);
return 0;
}
循环的后续调用中使用的线程?我很想做,因为我知道创建线程可能会很昂贵。
这就是我想做的事情:
Parallel.ForEach
有可能吗?
注意:我不能将外部循环平行化(在&#39; i&#39;之间的硬依赖性)
答案 0 :(得分:2)
Parallel.ForEach是TPL的一部分。默认情况下,负责将工作项排队到线程上的TaskSceduler将使用ThreadPool。
TaskScheduler类的实例表示任务调度程序。一个 任务调度程序确保最终执行任务的工作。 默认任务计划程序基于.NET Framework 4线程 pool,它为负载平衡线程提供工作窃取 注入/退出以获得最大吞吐量,并且总体良好 性能。对大多数情况来说应该足够了。该 TaskScheduler类也可作为所有人的扩展点 可定制的调度逻辑。这包括如何做的机制 安排执行任务,以及计划任务应该如何 暴露给调试器。如果您需要特殊功能,可以 创建自定义计划程序并为特定任务或查询启用它。