当前位置:  开发笔记 > 开发工具 > 正文

当事件模式不适用时,线程应该休息多长时间?

如何解决《当事件模式不适用时,线程应该休息多长时间?》经验,为你挑选了1个好方法。

在工作线程的主循环中,必须轮询以了解是否有工作要做,我让它睡眠以便不忙等待.我如何确定睡眠的好长度?E. g.如果我每毫秒醒来,它根本就没用.如果我每隔十分钟醒来,它可能会使应用程序看起来没有响应(取决于线程正在做什么).

我之前听说过干部在下面说过,人类用户不会注意到100毫秒左右的时间跨度,但是从机器方面接近它呢?在开始变得浪费之前,间隔有多小?

我猜,它归结为这个问题的更一般(即平台无关)的版本.

编辑:当然,问题应该首先被重新描述为"如何将其更改为事件模式而不是轮询",但我们现在假设我不能或不想这样做.



1> Binary Worri..:

有时轮询就是答案.

但是,轮询的频率取决于线程正在做什么,因此使其可配置.

我们有线程检查电子邮件.他们可以检查外部邮箱,我们每30秒左右只检查邮箱(但它是可配置的).每次检查都是通过网络进行的一次通话,每隔一秒钟或十分之一秒就会打电话给网络,30秒就可以了,如果电子邮件没有被处理则无关紧要.它会落入收件箱中(但是一些客户站点每5分钟检查一次).

我们有其他线程轮询文件夹中的文件,和/或添加到数据库中的表的新请求.这些每1至5秒轮询一次(取决于他们正在做什么).

现在无论您在轮询之间等待多长时间,我们都不会让任何线程睡眠时间超过一秒钟.原因是,如果您尝试停止线程休眠60秒的Windows服务,您可能需要在服务停止前等待60秒.

如果你需要匆忙降下机器,Rip Van Winkle线程将真正扭转你的mellon.

因此,请根据需要将您的轮询间隔分开,但不要长时间睡眠.

希望这可以帮助

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有