【问题标题】:How to create a process which polls at an interval?如何创建一个定期轮询的进程?
【发布时间】:2020-03-18 21:44:56
【问题描述】:

我正在尝试创建一个进程,每隔几秒/毫秒检查一次目录并处理其中的文件,以下内容在 Erlang 中是否可以接受?

init(Dir) ->    loop(Dir).

loop(Dir) ->
    check_dir(Dir),
    spawn(fun() -> do_something(File) end),
    timer:sleep(5).
    loop(Dir).

【问题讨论】:

    标签: loops recursion erlang repeat


    【解决方案1】:

    您可以通过多种方式做到这一点。一个好的第一个尝试是使用timer:apply_interval/4。您设置了一个间隔,该函数将在每个间隔应用(也称为调用)您的功能。

    apply_interval(10, cool_module_name, check_dir_and_notify, [File]).
    

    上面的函数调用将每 10 毫秒调用一次check_dir_and_notify。除非您取消它,否则它将永远持续下去。

    【讨论】:

    • 更加地道。 +1
    猜你喜欢
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2023-02-02
    相关资源
    最近更新 更多