erlang定时器以及 虚拟机开启参数说明

本文介绍了Erlang中的时间戳函数os:timestamp()、erlang:timestamp()和erlang:now()的使用区别,强调了erlang:now()的唯一性和可能的性能影响。同时,讲解了rand模块生成随机数的原理,以及Erlang虚拟机启动时的参数设置,如-K、-P、-smp等选项的作用,并探讨了单核和多核环境下Erlang调度器的工作模式。
摘要由CSDN通过智能技术生成

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) 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值