今天由于游戏的某些整点报时的需要,比如游戏排行榜数据得在凌晨更新一次,系统发给新手的每日新手倒计时奖励得每日凌晨更新一次,还有某些每到整点就需要触发的事情。鉴于考虑这个整点报时的可复用性,就计划写一个统一的接口,让erlang中的每一个进程在调用了这个接口注册之后,都能按时收到一个 info 消息,有了这样的一个高大全,定时就简单得多了。
%% @spec start_timely_info(integer(), integer()) -> {ok, TRef} | {error, Reason}
%% @doc 调用此接口,需要在info 中添加 消息接收
%% do_info({'do_timely_info', CallBack, Kind, Num}, State) ->
%% lib_timely_info:start_timely_info(CallBack, Kind, Num, 1),
%% {noreply, State};
%% 其中CallBack是改计时器需要定时触发的回调函数
%% 定时类型(按天(2)、小时(1)、星期(3))
%% -define(TIMELY_KIND_HOUR, 1).
%% -define(TIMELY_KIND_DAY, 2).
%% -define(TIMELY_KIND_WEEK, 3).
%% % ---------------------------------------------------------
%% % 定时器抛出的事件是否激活(0表示不激活,1表示激活)
%% -define(TIMELY_HANDLE_ACTIVE, 1).
%% -define(TIMELY_HANDLE_NOT_ACTIVE, 0).
%% ---------------CallBack---Kind---Num-- Active-----------
%% ---------------回调函数--定时类型-数量-是否激活回调函数----
start_timely_info(CallBack, Kind, Num,Active) ->
if Active =:= 1 ->
{M,F,A} = CallBack,
erlang:apply(M,F,A);
true ->
skip
end,
Now = misc_timer:now_seconds(),
LeftTime =
case Kind of
?HOUR ->
?ONE_HOUR - misc_timer:now_seconds() rem ?ONE_HOUR + (Num -1) * ?ONE_HOUR;
?DAY ->
util:get_next_day_seconds(Now) - Now + (Num - 1) * ?ONE_DAY;
_ ->
?ONE_WEEK
end,
timer:send_after(LeftTime * 1000, self(),{'do_timely_info', CallBack, Kind, Num}).
在调用接口的同时,若传入回调函数,让改接口函数定时给执行的话,只需要将回调函数 Callback 当做参数传入就可以了
另:为满足某些特殊需求,比如我在注册的时候就需要启动一次这个回调函数,因此增加一个参数来确定是不是需要立即执行回调函数
分享到:
相关推荐
erlang 25.1
rabbitmq安装相关的包,erlang.rpm/rabbitmq-server.rpm/socat.rpm,安装步骤看https://blog.csdn.net/qq_37846169/article/details/126085715?utm_source=app&app_version=5.5.0
官网下载实在是困难,我把当前Erlang / OTP 21.0 版本提交到这里提供给大家和自己下载 原先积分0的现在都这么高了,为了方便大家,放出云盘地址:https://pan.百度.com/s/1hb8vPiMslXxNuJC8PvnKgg提取码wmx8
erlang官方没有龙芯版本的安装包,这个是用24版本的源码在龙芯3a5000下编译的版本,解压缩以后将bin路径加入PATH环境变量即可使用。
我在Erlounge III大会上的讲演PPT。 相关的视频在这里: http://groups.google.com/group/erlang-china/browse_thread/thread/2154c39503795edc
此文件为otp_src_20.2.tar.gz 的二次压缩文件 解压先用unzip otp_src_20.2.zip 出来, 然后就是安装时的 tar -zxvf otp_src_20.2.tar.gz内容了, 此文件为了自己使用是方便找到,请把分数定为1分,谢谢
This guide covers Erlang/OTP requirements, recommendations, caveats and commonly used installation sources. Unsupported Versions Erlang/OTP versions older than 19.3 are not supported by currently ...
erlang otp25 win安装包
Erlang opt_win64 20.2 windows exe 安装包 Erlang 20.2 is the upcoming version of Erlang For Windows x64 installer 截至2018.01.25 groovy最新最稳定版本
Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677
这是第一卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
Erlang OTP 20.1 Windows 64-bit Binary File 下载地址:http://www.erlang.org/downloads
erlang -c语言程序接口.pdferlang -c语言程序接erlang -c语言程序接口.pdf口.pdf
Erlang/OTP R11B 文档 Erlang/OTP R11B documentation
rabbitmq 1.4.0源码,基于erlang语言
erlang 中文基础教程erlang 中文基础教程
This book is what you get if you put together an Erlang enthusiast who worked on the R1 release of OTP in 1996 and a Distributed Systems specialist who discovered Erlang/OTP
在本书中,会对一些难以理解Erlang/OTP特性进 行解释,另外,希望不熟悉Erlang/OTP基本知识的读者自行学习必要的内容F 17 F。 本书不要求读者知道如何调试Erlang软件,如何理解已有的代码库,如何诊断问题,以及知 ...
二十多年来,在传统电信领域高并发、高可靠、高容错的严酷环境下,Erlang语言和OTP平台被锻炼得坚如磐石,浓郁的函数式特质更是恰到好处地弥补了传统命令式语言在并发编程上的固有缺陷,大大降低了构筑并发、容错、...