首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务厂在开始时强制执行更多的任务。

任务厂在开始时强制执行更多的任务。
EN

Stack Overflow用户
提问于 2013-12-09 10:30:43
回答 1查看 103关注 0票数 0

我正在用这样的任务填充任务工厂(伪代码):

代码语言:javascript
复制
private int _taskcounter;

剪辑

代码语言:javascript
复制
var factory = new TaskFactory();
for(var i = 0;i<1000;i++)
   factory.StartNew(() => doWork());

剪辑

代码语言:javascript
复制
private void doWork(){
   Interlocked.Increment(ref _taskcounter);
   //do some slow I/O work here
   Interlocked.Decrement(ref _taskcounter);
}

如果你现在看_taskcounter,你可以看到

最初它大约启动10个任务,然后启动1到2个任务/s,直到队列完成。

小气明显的行为,不是吗?

我的问题是:

是否有办法迫使任务工厂在开始时启动更多的任务?

im已经通过一些msdn示例类的变化来限制运行任务的最大值,以防止过多的内存消耗。

或者这个有趣的测量方法或者我的考虑有什么问题吗?

没有必要在不同的线程中运行所有的工作,否则我不会使用工厂

我只想从工厂的非工作偷窃行为中获益。

其他的一切我都依赖于工厂的智慧。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-09 10:54:05

据我所知,TaskFactory使用ThreadPool,所以您可以尝试SetMaxThreads方法。但实际上,它的目的是优化资源消耗。所以我不认为你会有多大的效率提高。

您也可以尝试使用new Thread()手动启动线程,这将帮助您无限地启动多个线程,但我认为您不会获得太多的效率提高。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20468315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档