Mik*_*Lee 5 concurrency erlang locking
有很多关于如何使用erlang邮箱的信息,但很少找到文件或文档描述如何在VM内部同时进行erlang实际访问邮箱.
据我了解,Erlang VM必须执行锁定或CAS操作以保护消息完整性.在erlang帷幕背后是否有任何复杂的方法
通过邮箱我假设你的意思是进程邮箱,插入一条消息.有趣的问题!
这里也有一些谈话这里关于Erlang进程的消息队列的锁定特征:
只是好奇心:目前在发送消息时存在某种锁定.有没有人试图实现无锁链表:http: //www.amd64.org/fileadmin/user_upload/pub/epham08-asf-eval.pdf
或者我只是看错了地方,erts_smp_proc_lock已经在使用这样的东西?
消息队列已经有了这种情况.拥有消息框的进程有一个"内部框",他有一个锁定和一个"外部框",所有发件人都在竞争.因此,当许多进程发送到该进程时,锁争用位于"外部框"上的队列尾部.邮箱所有者并不关心它.
您可能会发现阅读BEAM流程的实现说明.
简短回答:是的,锁定是在消息队列上完成的,但它很复杂并且经过优化以减少调度程序线程之间的争用.