admin管理员组文章数量:1130349
在C#开发中我们难免会用到多线程操作,而且很多时候需要开启多个线程一直监视某个状态,当线程多的时候就会造成CPU内存占用率过高。电脑配置低的根本吃不消。
private void button1_Click(object sender, EventArgs e)
{
Thread TH1, TH2, TH3, TH4, TH5;
TH1 = new Thread(Thread1)
{
IsBackground = true
};
TH2 = new Thread(Thread2)
{
IsBackground = true
};
TH3 = new Thread(Thread3)
{
IsBackground = true
};
TH4 = new Thread(Thread4)
{
IsBackground = true
};
TH5 = new Thread(Thread5)
{
IsBackground = true
};
TH1.Start();
TH2.Start();
TH3.Start();
TH4.Start();
TH5.Start();
}
public void Thread1()
{
while (true) ;
}
public void Thread2()
{
while (true) ;
}
public void Thread3()
{
while (true) ;
}
public void Thread4()
{
while (true) ;
}
public void Thread5()
{
while (true) ;
}
比如上面这段代码,我们先看为运行前CPU的占用率。
这是很低的,而当我运行上面的代码后,一下子就达到了100%。这肯定是不行的。
解决方法:
只要我们上每个线程岔开时间执行即可,我们在每一段循环中架伊尔thread。sleep(1),让线程休眠等待。看看效果吧。
public void Thread1()
{
while (true)
Thread.Sleep(1);
}
public void Thread2()
{
while (true)
Thread.Sleep(1);
}
public void Thread3()
{
while (true)
Thread.Sleep(1);
}
public void Thread4()
{
while (true)
Thread.Sleep(1);
}
public void Thread5()
{
while (true)
Thread.Sleep(1);
}
仍然还是很低,一般的电脑运行起来都毫无压力。
这是我的一点心得,如有不妥的地方,欢迎指正哦!
在C#开发中我们难免会用到多线程操作,而且很多时候需要开启多个线程一直监视某个状态,当线程多的时候就会造成CPU内存占用率过高。电脑配置低的根本吃不消。
private void button1_Click(object sender, EventArgs e)
{
Thread TH1, TH2, TH3, TH4, TH5;
TH1 = new Thread(Thread1)
{
IsBackground = true
};
TH2 = new Thread(Thread2)
{
IsBackground = true
};
TH3 = new Thread(Thread3)
{
IsBackground = true
};
TH4 = new Thread(Thread4)
{
IsBackground = true
};
TH5 = new Thread(Thread5)
{
IsBackground = true
};
TH1.Start();
TH2.Start();
TH3.Start();
TH4.Start();
TH5.Start();
}
public void Thread1()
{
while (true) ;
}
public void Thread2()
{
while (true) ;
}
public void Thread3()
{
while (true) ;
}
public void Thread4()
{
while (true) ;
}
public void Thread5()
{
while (true) ;
}
比如上面这段代码,我们先看为运行前CPU的占用率。
这是很低的,而当我运行上面的代码后,一下子就达到了100%。这肯定是不行的。
解决方法:
只要我们上每个线程岔开时间执行即可,我们在每一段循环中架伊尔thread。sleep(1),让线程休眠等待。看看效果吧。
public void Thread1()
{
while (true)
Thread.Sleep(1);
}
public void Thread2()
{
while (true)
Thread.Sleep(1);
}
public void Thread3()
{
while (true)
Thread.Sleep(1);
}
public void Thread4()
{
while (true)
Thread.Sleep(1);
}
public void Thread5()
{
while (true)
Thread.Sleep(1);
}
仍然还是很低,一般的电脑运行起来都毫无压力。
这是我的一点心得,如有不妥的地方,欢迎指正哦!
版权声明:本文标题:C# 多线程造成CPU占用率高解决办法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754943450a2744666.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论