线程,线程数控制!
多线程与线程池的介绍看这里
http://edobnet.cnblogs.com/archive/2005/11/29/287094.html
//private int threadNum = 0;
//private AutoResetEvent myResetEvent = new AutoResetEvent(false);
/// <summary>
/// 线程记数器
/// </summary>
private int number = 0;

/// <summary>
/// 线程池执行
/// </summary>
public void Execute()
{
int maxCount = int.Parse(ConfigurationSettings.AppSettings["Count"]);
int time = int.Parse(ConfigurationSettings.AppSettings["Time"]);
foreach (TG_EvaluteBaseDatasSet service in this)
{
// System.Threading.ThreadStart ts = new System.Threading.ThreadStart(service.GetXMLResult);
// System.Threading.Thread th = new System.Threading.Thread(ts);
// th.Start();
WaitCallback async = new WaitCallback(FExeute);

while(true)
{
Monitor.Enter(number);
if(number>maxCount)
Thread.Sleep(time);
else
break;
Monitor.Exit(number);
}
if(ThreadPool.QueueUserWorkItem(async,service))
Interlocked.Increment(ref number);
}
while(true)
{
//myResetEvent.Set();
Monitor.Enter(number);
if( number <= 0)
break;
else
Thread.Sleep(time);
Monitor.Exit(number);
}
OnTgFinishReport(new EventArgs());

}
/// <summary>
/// 线程执行一个计算
/// </summary>
/// <param name="Param">执行对象<see cref="GleNet.HG.HTResolver.TG_EvaluteBaseDatasSet">TG_EvaluteBaseDatasSet</see></param>
public void FExeute(object Param)
{
//myResetEvent.WaitOne();
using(TG_EvaluteBaseDatasSet service = (TG_EvaluteBaseDatasSet)Param)
{
service.doResult();
writeFile(Path,service) ;
OnTgReport(new ReportEvent(service.TE_PASS_RANGE,service.TE_YEAR,service.TE_MONTH,int.Parse(service.TE_I_E_FLAG),int.Parse(service.TE_ENTRY_TYPE),number));
}
Interlocked.Decrement(ref number);
Console.WriteLine("LEFT:"+number);
}
http://edobnet.cnblogs.com/archive/2005/11/29/287094.html


































































由程序控制线程数量,并且, 由MONITOR进行保护!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述