每个任务分配更多线程

发布于 2024-10-31 02:59:41 字数 145 浏览 0 评论 0原文

如何从 TPL 为每个任务分配更多线程?我想调查一下,如果我将其设置为更大的值,我可以获得更好的性能。

现在我看到我的应用程序最多使用 14 个线程,并且 cpu 使用率最多为 13%(核心 i7)。

其次,如何检查当前为任务指定了多少个线程?

How can I allocate more threads per task from TPL? I want to investigate if I set this to bigger value I can get a better performance.

Now I see my app is using max 14 threads and cpu is max 13% in use (core i7).

And second how can I check how many threads is currenty specified for a task?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

请叫√我孤独 2024-11-07 02:59:41

有一个名为 TaskScheduler 的内置扩展点。默认任务计划程序使用 .NET 线程池线程和多种启发式方法来确定用于处理排队任务的最佳线程数。 有关默认实现的更多信息可在 MSDN 上找到(请参阅标题为“ 默认任务计划程序)。

如果您创建自己的 TaskScheduler 实现,您可以准确控制要分配的线程数量、分配时间、分配的核心等。MSDN 上有一个关于如何执行此操作的示例,但您会发现更完整、更多样化并行扩展 Xtra 中的示例实现。

话虽如此,如果您能够击败默认实现,我会感到惊讶。如果您正在执行任何 I/O,请确保您充分利用带有 Task.FromAsync 的异步 I/O APM API。

There is a built in extension point called the TaskScheduler. The default task scheduler uses .NET thread pool threads and several heuristics to determine the optimal number of threads to use to process the tasks that are queued up to it. More info on the default implementation is available here on MSDN (see section titled The Default Task Scheduler).

If you create your own TaskScheduler implementation you can control exactly how many threads you want to allocate, when they're allocated, on what cores, etc. There's a sample here on MSDN on how to do this, but you'll find more complete and varied sample implementations in the Parallel Extensions Xtras.

All that said, I'd be surprised if you can beat the default implementation. If you're doing any I/O, make sure you're taking full advatange of async I/O APM APIs with Task.FromAsync.

如果没有 2024-11-07 02:59:41

根据您使用 TPL 的方式,您可以使用 TaskCreationOptions.LongRunning 创建任务,或者如果您使用的是 Parallel.For 之类的内容,则可以在 ParallelismOptions 中指定 MaxDegreeOfParallelism。

查看此问题 更多链接

Depending on how you are using TPL, you could create the tasks with TaskCreationOptions.LongRunning, or possible specify MaxDegreeOfParallelism in ParallelismOptions if you are using something like Parallel.For.

See this question for more links

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文