timerモジュールは、一定時間後に指定した関数を呼び出したりメッセージを送ったりできる便利なモジュールです。 timerモジュールは便利ですが、いくつか落とし穴もあります。 このモジュールを利用するにあたって注意する点について書いていきます。 timerモジュールは遅い というのも、タイマーの処理は1プロセスで全て行っているからです。 そして、timer:send_after/{2,3} や timer:cancel/1 は、gen_server:call/3 を使ってそのプロセスの処理が完了するのを待っています。 例えば timer:send_after/3 は以下のようなコードになっています。 このように gen_server:call(timer_server, ..., infinity) という書き方をしているため、複数のプロセスから大量に timer:send_after/{