gen_server:每 X 秒调用一次

发布于 2025-01-08 09:48:40 字数 117 浏览 0 评论 0原文

gen_server 的状态是一个列表,应该每 X 秒处理一次。因此,我需要每X秒执行一次handle_call({process},State)。

每X秒执行一次handle_call的最佳方法是什么?

The Status of the gen_server is a list and should be processed once every X seconds. Therefore, I need to execute handle_call({process},State) every X seconds.

What is the best way to have a handle_call executed every X seconds?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷子口的你 2025-01-15 09:48:40

“定时器”模块可以解决您的问题。例如,在 otp hehaviour 实现模块中,

init([]) ->
    timer:send_after(1000,self(),{create_log}), %<====== create an event after 1000ms
    {ok, #state{id=1}}.

handle_info({create_log},#state{id=ID})-> %<=========handle the timer event
    %io:format("handle info~n",[]),
    New_id = ID + 1,
    ls117_single_process_log:error("test log ~p~n",[New_id]),
    timer:send_after(1000,self(),{create_log}),  %<========restart timer
    {noreply,#state{id=New_id}}; 

“Timer” module can solve your problem. For example, In otp hehaviour implemention module,

init([]) ->
    timer:send_after(1000,self(),{create_log}), %<====== create an event after 1000ms
    {ok, #state{id=1}}.

handle_info({create_log},#state{id=ID})-> %<=========handle the timer event
    %io:format("handle info~n",[]),
    New_id = ID + 1,
    ls117_single_process_log:error("test log ~p~n",[New_id]),
    timer:send_after(1000,self(),{create_log}),  %<========restart timer
    {noreply,#state{id=New_id}}; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文