【发布时间】:2011-09-03 17:00:34
【问题描述】:
我正在控制台上查看 error_logger 消息,并将它们同时存储在带有error_logger_mf 的文件中。
如果我查看文件和控制台,消息的顺序完全不同。
时间戳都显示相同的值,所以它运行得非常快,而且我知道从不同进程发送消息时可能会出现乱序。
但我一直认为,一旦到达 error_logger,当它们被发送到不同的事件处理程序时,它们会保持相同的顺序。
我在文件中看到的(当我使用rb 查看它时)事件以比控制台上更合理的顺序出现。
澄清:
很明显,不同进程的消息到达error_logger的顺序不要太认真。
我不明白的是顺序的区别,当我比较磁盘日志和屏幕日志时。
在社区 wiki 中添加了我的部分发现的答案,如果您知道其他要点,请进行编辑。
【问题讨论】:
-
独占IO控制台是一场同步竞赛。或者至少这是我的猜测。那里可能有一个 spawn 让多个人想要访问控制台,因此这是谁先获取 IO 锁的问题。
-
@IG:检查了从错误记录器处理程序到 tty 的路径,但找不到任何证据(参见下面的 c.wiki)。
标签: erlang error-logging