receive…after
语法层面的实现。一旦timeout立即把进程加到调度队列,使用频度比较高。
erlang:send_after与erlang:start_timer
bif的实现。
erlang:start_timer(Time, Dest, Msg) -> TimeRef
Time: 最大的值为2^32 -1 milliseconds, 大约为49.7天。
Dest: 本地节点,类型为atom()或者pid()
- 如果是Dest::atom(), 即便这个Dest 没有绑定一个process 也不会报错, 而是返回正常的TimeRef。但是在进程不存在和进程退出的情况下,该timer 不是立即取消,而是在Time 时间结束的时候才取消的。
- 如果是Name::pid(), 如果进程存在或者进程退出,该timer 会立即取消
erlang: