timer
模块
timer(计时器)
模块摘要
计时器功能。
描述
该模块提供了与时间相关的有用功能。除非另有说明,否则时间总是以毫秒为单位。所有计时器函数都会立即返回,而不管其他进程是否完成了工作
定时器函数的成功评估给出了包含定时器参考的返回值,表示为TRef。 通过使用取消/ 1,可以使用返回的引用来取消任何请求的操作。 TRef是一个Erlang术语,其内容不得改变。
超时并不准确,但至少与要求的一样长。
数据类型
time() = integer() >= 0
时间以毫秒为单位。
tref()
计时器参考。
输出
apply_after(Time, Module, Function, Arguments) ->
{ok, TRef} | {error, Reason}
类型
毫秒apply(Module, Function, Arguments)后评估Time。
返回{ok, TRef}或{error, Reason}。
apply_interval(Time, Module, Function, Arguments) ->
{ok, TRef} | {error, Reason}
类型
apply(Module, Function, Arguments)每隔一段时间重复评估一次Time。
返回{ok, TRef}或{error, Reason}。
cancel(TRef) -> {ok, cancel} | {error, Reason}
类型
取消先前请求的超时。TRef是由相关定时器功能返回的唯一定时器参考。
当TRef不是定时器引用时返回{ok, cancel}或{error, Reason}
exit_after(Time, Reason1) -> {ok, TRef} | {error, Reason2}
exit_after(Time, Pid, Reason1) -> {ok, TRef} | {error, Reason2}
类型
exit_after/2类似于exit_after(Time, self(), Reason1)。
exit_after/3发送带有理由的退出信号Reason1给pid Pid。返回{ok, TRef}或{error, Reason2}。
hms(Hours, Minutes, Seconds) -> MilliSeconds
类型
返回Hours + Minutes + Seconds中的毫秒数
hours(Hours) -> MilliSeconds
类型
返回Hours中的毫秒数
kill_after(Time) -> {ok, TRef} | {error, Reason2}
kill_after(Time, Pid) -> {ok, TRef} | {error, Reason2}
类型
kill_after/1类似于exit_after(Time, self(), kill)。
kill_after/2类似于exit_after(Time, Pid, kill)...
minutes(Minutes) -> MilliSeconds
类型
返回Minutes中的毫秒数
now_diff(T2, T1) -> Tdiff
类型
微秒
计算Tdiff = T2 - T1以微秒为单位的时间差,其中T1和T2时间元组的格式与从erlang:timestamp/0或返回的格式相同os:timestamp/0。
seconds(Seconds) -> MilliSeconds
类型
返回Seconds中的毫秒数
send_after(Time, Message) -> {ok, TRef} | {error, Reason}
send_after(Time, Pid, Message) -> {ok, TRef} | {error, Reason}
类型
send_after/3
毫秒Pid ! Message后评估Time。(Pid也可以是注册名称的原子。)
返回{ok, TRef}或{error, Reason}。
send_after/2
类似于send_after(Time, self(), Message)。
send_interval(Time, Message) -> {ok, TRef} | {error, Reason}
send_interval(Time, Pid, Message) -> {ok, TRef} | {error, Reason}
类型
send_interval/3
毫秒Pid ! Message后重复评估Time。(Pid也可以是注册名称的原子。)
返回{ok, TRef}或{error, Reason}。
send_interval/2
类似于send_interval(Time, self(), Message)。
sleep(Time) -> ok
类型
暂停调用该函数Time几毫秒的进程,然后返回ok,或者如果Time是原子,则永久挂起进程infinity。当然,这个功能并没有立即返回。
start() -> ok
启动计时器服务器。通常,服务器不需要明确启动。如果需要,它会动态启动。这在开发过程中很有用,但在目标系统中,服务器将明确启动。Kernel为此使用配置参数。
tc(Fun) -> {Time, Value}
tc(Fun, Arguments) -> {Time, Value}
tc(Module, Function, Arguments) -> {Time, Value}
类型
微秒
tc/3
评估适用(模块,函数,参数)并测量os:timestamp / 0报告的已用实时。
返回{Time, Value},其中Time是经过的实时(以微秒为单位),并且Value是从apply返回的值。
tc/2
评估apply(Fun, Arguments)。否则类似于tc/3。
tc/1
评估Fun()。否则类似于tc/2。
实例
例1
以下示例显示如何打印“Hello World!” 在5秒内:
1> timer:apply_after(5000, io, format, ["~nHello World!~n", []]).
{ok,TRef}
Hello World!例2
以下示例显示执行特定操作的进程,如果此操作未在特定限制内完成,则会终止该进程:
Pid = spawn(mod, fun, [foo, bar]),
%% If pid is not finished in 10 seconds, kill him
{ok, R} = timer:kill_after(timer:seconds(10), Pid),
...
%% We change our mind...
timer:cancel(R),
...注记
定时器总是可以通过调用cancel/1来删除。
间隔定时器,即通过评估任何函数apply_interval / 4,send_interval / 3和send_interval / 2创建的定时器链接到定时器执行其任务的进程。
甲单次计时器,也就是,通过评估的任何功能创造了一个定时器apply_after/4,send_after/3,send_after/2,exit_after/3,exit_after/2,kill_after/2,和kill_after/1没有连接到任何进程。因此,这样一个计时器只有在到达超时时间时才会被删除,或者如果通过呼叫被明确删除cancel/1。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

