1 os:timestamp(). erlang:timestamp(), erlang:now() 都是返回系统时间戳{MegaSecs(秒*1000000), Secs(秒数), MicroSecs(微秒数)}
2 erlang:timestamp(). erlang:now().
erlang:timestamp()获取到的时间更接近于操作系统时间,erlang:now()每次获取都会生成唯一的时间,看来erlang:now()在实现上对时间多做了一个校正,相对erlang:timestamp()有点失真,同时也会有多余的开销。但是erlang:now()每次都生成唯一的值
3.时间戳为 {M, S, _}= os:timestamp() M*1000000 + S 即为 erlang:system_time(1).(取秒数的时间戳)
4. rand的随机数。会通过设置一个种子。根据种子来生成随机数。(默认利用当前时间作为种子)。
1) erlang启动的时候的命令
-eval Exp 表达式作为启动时参数
- pa dir1 di2 在头部增加标准搜索path
- pz dir1 dir2在尾部增加搜索path 可以作为
- path 直接替换(replace)path
-config F 告诉系统用F作为系统配置文件来重写application源文件中的配置
-remsh Node 启动远程节点
+ K true/false 是否启用on个kernel的poll机制
+ P Number|legacy 最大进程数量
-smp auto|enable|disable 是否需要支持SMP 默认是enable
-boot 指定启动使用的boot文件 替代$ROOT/bin/start.boot
-args_file FileName 从文件FileName读取命令行参数
没有SMP支持的Erlang VM只有一个Scheduler运行于主线程;Scheduler从运行队列中取出需要处理的Erlang进程和IO-job;由于只有一个Scheduler没有必要对数据加锁;见下图:
有SMP支持的Erlang VM 可以有1~1024个Scheduler,每一个Scheduler都会运行于一个独立的操作系统线程;操作系统决定它是否要在不同的核上运行.由于多个Scheduler就要对数据加锁,一个Erlang进程可能前后被多个Scheduler调度;
Ms = ets:fun2ms(fun(E) when E#player_state.is_online == 1 ->
[E#player_state.actor#r_db_actors.platform,
E#player_state.misc#player_misc.ip]
end),
生成一个Ms的 匹配 字符
case ets:select(?ETS_ONLINE, Ms) 。