经常在线程中用到等待 程序逻辑大多都是无限循环 比如说用线程维护一个目录 一直读取目录下面的文件
1:当有个调度线程是间隔调度或是定时调度的时候
这个时间是比较长的 这时可以用一个线程来处理 (观察者模式可以很好的解决这类长时间的问题)
这个方法是最好的 但逻辑稍微复杂一点 不过也好实现
2:当目录下没有文件时就会等待一小会 这可以设置成10s或者20s 或是当时间都是那些不长不断 几分钟的时候 又不愿意浪费资源新启一个线程的时候,
这种情况下选择Sleep()也不错 但是会出现一个问题
这个Sleep所在的线程就会被阻塞 收不到其他人发的消息 比如说 你sleep 1分钟的时候 用户需要停止服务 或是关掉你的程序
这时1分钟就非常长了 因为说不定你启了多个线程 而线程中有嵌套了一些其他的Sleep() 这时就可能达到5分钟或者以上
有个好的解决方法 : 用资源(效率)换取 程序的灵活性
// sleep 1800s// Sleep(1000 * 1800);
for (int i = 0; i < 1800; ++i)
{
Sleep(1000);
if (有消息吗)
{
break;
}
}
而且这样写也不会影响到其他的线程