在 C# 中创建动态线程 [关闭]
Posted
技术标签:
【中文标题】在 C# 中创建动态线程 [关闭]【英文标题】:Create Dynamic Threads in c# [closed] 【发布时间】:2020-04-01 23:29:17 【问题描述】:我需要在 c# 中创建一个动态线程来执行我的数据表行。
例如:我在数据表中有 10000 行,所以我需要创建 10 个线程,每个线程一次将执行 1000 条记录。
如果我的表格行数会增加,那么线程创建也需要增加
通常,我们创建一个线程,它将执行整个 10000 条记录,我需要动态线程,这将以拆分格式执行我的 10000 条记录,这将提高我的应用程序性能。
如果我创建了 4 个线程来执行我的 10000 条记录,每个线程将执行 2500 条记录。
第一个线程将执行 0 到 2500 条记录 第二个线程将执行 2501 到 5000 条记录 第三个线程将执行 5001 到 7500 条记录 第 4 个线程将执行 75001 到 10000 条记录
对于上面的例子,我决定创建 4 个线程,我希望它应该是动态的方式
【问题讨论】:
请提供更多信息,也许发布一些您编写的代码示例? 这听起来很不寻常,也许您想要一个消息队列和基于队列长度的横向扩展?您能否分享更多有关您正在尝试解决的问题的信息 查看Parallel.ForEach()
,它会毫不费力地完成所有这些工作。
最佳线程数取决于您的 CPU,而不是数据的大小。
别那样做!
【参考方案1】:
您的问题缺乏细节,但我认为您正在寻找一种限制机制。有很多现有的库可以为您完成繁重的工作,例如https://nugetmusthaves.com/Tag/throttling
您也可以自己实现。同步和异步代码的实现细节会有所不同。
https://blog.briandrupieski.com/throttling-asynchronous-methods-in-csharp
【讨论】:
以上是关于在 C# 中创建动态线程 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 的后台线程中创建 BitmapImage 缓冲区? [复制]
c#线程问题,创建一个线程,有两个方法,一个方法启动这个线程,另一个方法关闭这个线程,能举例最好