Модуль timer содержит функции для работы с таймером. Как написано в документации, более эффективным является использование стандартного таймера Эрланга (erlang:start_timer/3 и erlang:send_after/3). Однако данный модуль содержит несколько удобных функций: для создания периодических таймеров, спауна, засыпания, измерения времени выполнения фунтермов и функций, посылания актору сигнала выхода.
Время везде по умолчанию указывается в миллисекундах.
apply_after(Time, Function) Спаунит фунтерм по таймеру — через Time миллисекунд.
apply_after(Time, Function, Arguments) Спаунит фунтерм с аргументами по таймеру — через Time миллисекунд.
apply_after(Time, Module, Function, Arguments) Спаунит МФА по таймеру — через Time миллисекунд.
apply_interval(Time, Function) Запускает специальный таймер, который будет через Time миллисекунд спаунить фунтерм.
apply_interval(Time, Function, Arguments) Запускает специальный таймер, который будет через Time миллисекунд спаунить фунтерм с аргументами.
apply_interval(Time, Module, Function, Arguments) Запускает специальный таймер, который будет через Time миллисекунд спаунить МФА.
Остановить этот таймер можно с помощью timer:cancel({interval,TRef}).
apply_repeatedly(Time, Function) Запускает специальный таймер, который будет через Time миллисекунд спаунить фунтерм; как заявлено, новый актор не будет спауниться, пока предыдущий не завершил работу.
apply_repeatedly(Time, Function, Arguments) Запускает специальный таймер, который будет через Time миллисекунд спаунить фунтерм с аргументами; как заявлено, новый актор не будет спауниться, пока предыдущий не завершил работу.
apply_repeatedly(Time, Module, Function, Arguments) Запускает специальный таймер, который будет через Time миллисекунд спаунить МФА; как заявлено, новый актор не будет спауниться, пока предыдущий не завершил работу.
cancel(TRef) Заканчивает работу таймера с данным идентификатором; для периодических таймеров надо указывать {interval,TRef}.
exit_after(Time, Target, Reason1) Через Time миллисекунд посылает {exit,Reason} указанному актору.
hms(Hours, Minutes, Seconds) Превращает временной интервал, заданный с помощью часов, минут и секунд, в количество миллисекунд.
hours(Hours) Переводит часы в миллисекунды.
minutes(Minutes) Переводит минуты в миллисекунды.
now_diff(T2, T1) Вычисляет разницу в микросекундах между двумя указанными временными отметками в формате timestamp.
seconds(Seconds) Превращает секунды в миллисекунды.
send_after(Time, Destination, Message) Через Time миллисекунд пошлёт сообщение указанному актору.
send_interval(Time, Destination, Message) Запускает специальный таймер, который будет периодически через Time миллисекунд посылать данное сообщение указанному актору.
sleep(Time) Заснуть на столько-то миллисекунд.
start() Запускает сервер таймера; обычно нет нужды делать это специально, он запускается автоматически, когда надо.
tc(Fun) Выводит время, за которое исполнился фунтерм.
tc(Fun, Arguments) Выводит время, за которое исполнился фунтерм, запущенный с данными аргументами.
tc(Module, Function, Arguments) Выводит время, за которое исполнился МФА.
tc(Module, Function, Arguments, TimeUnit) Выводит время, за которое исполнился МФА, в формате определённого временного юнита.
Copyright © 2025 Алексей Карманов