Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 关闭时终止多个线程的最佳方法_Multithreading_Shutdown - Fatal编程技术网

Multithreading 关闭时终止多个线程的最佳方法

Multithreading 关闭时终止多个线程的最佳方法,multithreading,shutdown,Multithreading,Shutdown,我正在寻找安全关闭多个线程的方法,这些线程的工作是 while(1) { doAction sleep } 我正在考虑使用一个布尔值,比如说正在关闭,让while循环在睡觉前检查它。但是,我担心如果处于睡眠状态,关机将不得不等待睡眠完成,然后再检查变量。想知道是否有办法唤醒睡眠中的线程并优雅地退出。在.NET中:如果线程没有清理:将线程的IsBackground属性设置为true,它将随着进程终止 如果要进行清理,我建议实现显式调用以确实设置布尔值(或在.NET中使用任务时设置

我正在寻找安全关闭多个线程的方法,这些线程的工作是

while(1) {
    doAction
    sleep
}

我正在考虑使用一个布尔值,比如说
正在关闭
,让while循环在睡觉前检查它。但是,我担心如果处于睡眠状态,关机将不得不等待睡眠完成,然后再检查变量。想知道是否有办法唤醒睡眠中的线程并优雅地退出。

在.NET中:如果线程没有清理:将线程的IsBackground属性设置为true,它将随着进程终止

如果要进行清理,我建议实现显式调用以确实设置布尔值(或在.NET中使用任务时设置取消标记)。在这种情况下,关闭进程的线程必须至少等待工作线程的睡眠时间才能唤醒和清理


我建议不要中止线程。虽然它可能会中断线程,但如果它在中止时正在执行某些操作(如写入文件),它可能尚未完成其工作,这可能会使状态处于不确定状态。

什么语言,什么操作系统?