我们最近作为阅读小组的一员阅读了BEAM这本书。在第7章中,有一个暗指二郎中的ref技巧/同步调用技巧。
不幸的是,这本书不完整,经过讨论,我们无法弄清楚裁判的把戏是什么。
执行receive
时,BEAM VM会扫描邮箱以找到第一条合适的(匹配的(消息,如果找不到任何消息,则会阻止该进程
"诀窍"是,由于在创建新引用之前,它不可能在邮箱中,因此在receive {Reference, Term}
时不需要扫描整个邮箱,只需要从创建Reference
的点开始扫描。
这就是以下短语的含义:The compiler recognizes code that uses a newly created reference (ref) in a receive (see [ref_trick_code]), and emits code to avoid the long inbox scan since the new ref can not already be in the inbox.