- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想每隔几个小时在 Erlang 服务器上运行一个小型清理过程。
我知道计时器模块。我在教程中看到一个示例,使用链式计时器: sleep 命令来等待几天后发生的事件,我觉得这很奇怪。我知道 Erlang 进程与其他语言的进程相比是独一无二的,但是进程/线程一次休眠数天、数周甚至数月的想法似乎很奇怪。
因此,我着手找出 sleep 的实际作用的细节。我发现最接近的是一篇博客文章,其中提到 sleep 是通过接收超时实现的,但这仍然留下了问题:
这些 sleep /类似 sleep 的功能实际上是做什么的?
我的进程是否在休眠时占用资源?有数千个休眠进程会使用尽可能多的资源,例如,数千个进程服务于一个什么都不做的递归调用吗?在进程中反复休眠或长时间休眠是否会导致性能损失?虚拟机是否不断地消耗资源来查看结束进程 sleep 的条件是否成立?
作为旁注,如果有人可以评论是否有比 sleep 更好的方法来一次暂停数小时或数天,我将不胜感激?
最佳答案
这是任何 erlang 进程的业力:它等待或死亡 :o)
当一个进程被生成时,它开始执行直到最后一个执行行,然后死掉,返回最后一个评估。
为了使进程保持事件状态,没有其他解决方案可以在无休止的连续调用中递归循环。
当然,有几个条件使它停止或休眠:
on_tick_sec(Module,Function,Arglist,Period) ->
on_tick(Module,Function,Arglist,1000,Period,0).
on_tick_mn(Module,Function,Arglist,Period) ->
on_tick(Module,Function,Arglist,60000,Period,0).
on_tick_hr(Module,Function,Arglist,Period) ->
on_tick(Module,Function,Arglist,60000,Period*60,0).
on_tick(Module,Function,Arglist,TimeBase,Period,Period) ->
apply(Module,Function,Arglist),
on_tick(Module,Function,Arglist,TimeBase,Period,0);
on_tick(Module,Function,Arglist,TimeBase,Period,CountTimeBase) ->
receive
stop -> stopped
after TimeBase ->
on_tick(Module,Function,Arglist,TimeBase,Period,CountTimeBase+1)
end.
1> Pid = spawn(util,on_tick_sec,[io,format,["hello~n"],5]).
<0.40.0>
hello
hello
hello
hello
2> Pid ! stop.
stop
3>
关于multithreading - Erlang 怎么 sleep (晚上?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054693/
这是我的数据框,我需要根据行值(早上、下午、晚上、晚上)的时间创建一个新列 这是我的代码 if ((prods['hour'] 8 )): prods['session'] = 'Early
我在时间数据框中有这个向量,格式为小时:分钟,我想将其转换为一天中的分类时间: time <- c("15:03", "08:01", "11:59", "23:47", "14:20")
我每天都有很多事件。有没有办法将这些事件按水平移动类别分开?我可以添加一个额外的标志(或类即:早上、白天、晚上、晚上)以及“标题:”和“开始:”,以便事件将在同一天内按各自的水平移动进行组织吗?我用过
IOS 应用程序以登录名称显示早上/下午/晚上。例如:像这样的早安 X 先生。 需要从当前日期和时区计算那些事件 最佳答案 // For calculating the current date NS
我有一个像这样的Hive表: create table my_table ( my_timestamp String ) my_timestamp的格式为YYYY-MM-DD HH:MM:SS。我需要
我想每隔几个小时在 Erlang 服务器上运行一个小型清理过程。 我知道计时器模块。我在教程中看到一个示例,使用链式计时器: sleep 命令来等待几天后发生的事件,我觉得这很奇怪。我知道 Erlan
我正在尝试编写一个 HTML 文档,向访问者显示问候语,例如“早上好/下午/晚上好!”但我不知道如何同时使用小时和分钟: ITP1 var myDate = ne
我有一个 iOS 应用程序。该应用程序的其中一个部分显示了特定位置的简单小天气预报。作为此预测的一部分,该应用程序还显示了一些图像。这些图像要么是基于白天的,在这种情况下它们将具有“太阳”图像,要么基
我想做什么:: 显示消息基于 早上好(12am-12pm) 中午后好(中午 12 点 - 下午 4 点) 晚上好(下午 4 点至晚上 9 点) 晚安(晚上 9 点到早上 6 点) 代码:: 我使用 2
我尝试在 android 中检测早上、晚上、晚上的时间。因为我想在天黑的时候开灯。如果外面是晴天就关灯。 我可以定义晚上或早上的时间范围。例如早上 6 点到晚上 7 点是明亮的。但这在每个国家、每个季
我有一项服务可以每天监控位置变化。到目前为止我所知道的start a service at boot ,我必须遵循链接的教程。这样我就可以在启动时启动服务,但为了节省电量,我只需要在上午 9 点到晚上
执行简单的返回函数来检查时间是否在晚上 11 点到早上 7 点之间的最佳方法是什么? 有这样的想法,但问题是 1am 会是 1 并且不会大于 23,但 23(晚上 11 点)会大于 23。 retur
我正在尝试找到一种方法来获取一天中的时间。显然有一种简单的方法可以做到这一点 Application to Display Morning,Evening如果您对一种语言的静态词没问题。有没有办法根据
现在是下午 4:11,但我的输出显示为“早上好” - 为什么会发生这种情况? $(document).ready(function() { function dateTime() { va
$start = '22:00:00'; $end = '08:00:00'; $now = Carbon::now('UTC'); 如何检查 $now 的时间是否在时间范围内? 最佳答案 通过使用
我想在 Jenkins 中安排一个工作,在晚上 18 点到凌晨 2 点之间的某个时间运行。 所以我在Build periodically/Schedule 字段中输入了以下公式: H H(18-2)
我需要Java @Scheduled注释来运行一个调度程序,该调度程序应该在上午 9.30 开始并且>每 15 分钟运行一次(即上午 9.30、上午 9.45、上午 10.00、上午 10.15...
我是一名优秀的程序员,十分优秀!