BEAM 中的同步调用 Trick/Ref 技巧是什么
What is the Synchronous Call Trick/Ref Trick in BEAM
我们最近在阅读 BEAM book as part of our reading group. In Chapter 7 引用了 Erlang 中的 trick/Synchronous Call Trick。
不幸的是,这本书不完整,经过讨论我们无法弄清楚 ref 技巧是什么。
执行 receive
时,BEAM VM 会扫描邮箱以找到第一个合适的(匹配的)消息,如果找不到则阻塞进程。
'trick'是因为新引用不可能在创建之前就在邮箱中,所以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.
我们最近在阅读 BEAM book as part of our reading group. In Chapter 7 引用了 Erlang 中的 trick/Synchronous Call Trick。
不幸的是,这本书不完整,经过讨论我们无法弄清楚 ref 技巧是什么。
执行 receive
时,BEAM VM 会扫描邮箱以找到第一个合适的(匹配的)消息,如果找不到则阻塞进程。
'trick'是因为新引用不可能在创建之前就在邮箱中,所以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.