在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);
}
仍然还是很低,一般的电脑运行起来都毫无压力。
这是我的一点心得,如有不妥的地方,欢迎指正哦!