Thread.Sleep()在连续循环中的影响
本文关键字:循环 影响 连续 Sleep Thread | 更新日期: 2023-09-27 18:03:37
考虑以下代码:
void MyRunningThread()
{
while(counter>0) // counter is a Class member that can get modified from external //threads
{
Thread.Sleep(2000);
}
}
假设我在上面的函数上启动一个线程。
现在,在线程中有这样一个永不结束的循环是不好的吗?我添加了Thread.Sleep(),假设上下文切换到这个函数的频率会因为Sleep而降低,从而减少这个线程的资源消耗。
谁来验证我的观点
浪费一个线程,这远非最佳选择。
你应该考虑使用Timer或WaitHandle之类的。如果没有更多的细节,就不可能做到精确。
但是你目前的方法不是灾难性的或任何东西,前提是其他线程使用lock
或InterLocked
来改变计数器。
尝试使用System.Threading.SpinWait而不是sleep,本文将解释如何使用它http://www.emadomara.com/2011/08/spinwait-and-lock-free-code.html
你能详细说明你的问题吗?为什么需要在另一个线程中等待?无论如何,如果您需要等待直到某个计数器变为零,您可以考虑使用CountdownEvent