我正在寻找安全关闭多个线程的方法,这些线程的工作是
while(1) {
doAction
sleep
}
我正在考虑使用布尔说is_shutting_down
并让while循环在进入睡眠状态之前检查它。但是,我担心如果处于睡眠状态,在再次检查变量之前,shutdown必须等待睡眠完成。想知道是否有办法wakeup
睡眠线程并优雅地退出。
答案 0 :(得分:0)
在.NET中:如果线程没有进行清理:将线程的IsBackground属性设置为true,它将随进程终止。
如果要进行清理,我建议实现一个显式调用来确实设置一个布尔值(或在.NET中使用任务时取消令牌)在这种情况下,关闭进程的线程将不得不等待至少工作线程唤醒和清理的休眠时间。
我建议不要中止线程。虽然它可能会中断线程,但如果它在Abort时正在做某事,就像写入文件一样,它可能没有完成它的工作,这可能会让状态处于不稳定状态。