论坛首页 综合技术论坛

smp下async_driver的用途和匠心

浏览 1482 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-07  
/* INTERNAL use only */
struct erl_drv_entry async_driver_entry;

erlang beam里面有个async_driver设计的比较有意思。 在多处理器beam里面,线程间需要通讯。常规的情况下用condition再有个队列之类的辅助。 但是这个设计不能充分利用io的优势,而且使用起来很麻烦。async_driver就是设计给这个用途的。 它建立一对pipe,把它登记到poll去,生产者要发送消息的时候,就往pipe写。 poll机制就会通知消费者,消费者根据读出的东西进行动作. ACE框架也大量用这种模式,看来大同世界一般同。但是erlang做的更彻底,概念也更简单。
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics