在 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# 中止线程:此平台不支持线程中止

C#如何释放线程

c#线程问题,创建一个线程,有两个方法,一个方法启动这个线程,另一个方法关闭这个线程,能举例最好

C/C++:std::thread构造函数死锁问题:WIN32下不可以在DllMain中创建线程

可以在多线程 DLL 的接口函数中创建线程吗?