发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

使用Erlang消息机制实现稳定婚姻问题

              
2015-03-14 08:26
赞助商链接

如何在异步消息传递中实现稳定婚姻Stable Marrige问题,这是使用Erlang编码的源码实现。

Solving the Stable Marriage problem in Erlang | th

稳定婚姻问题是这样:
假设有n个男人和n个女人,每位男士都要和所有的女士进行短暂的单独交流,并为她们打分,然后按照喜欢程度,对每一位女士进行排序;同样的,每位女士也要对所有男士进行打分和排序。每个男人只能配一个女人,如果没有一个人喜欢两个人,那么所有这些婚姻都是稳定的。

对于这个问题描述,假设在我们系统中有三个模块:
1.一个模块代表男人
2.一个模块代表女人
3.一个模块代表好娘中介机构,复制给男女配对策划的。

如下图:




注意上图中每一个消息过程,首先,策划者orchestrator向两个男人发出消息表示开始抢女人,最左边的男人提议了一个女人,这个女人接受了这个男人,男人向策划者报告自己配对了一个女人,下面竞争来了,左边第二个男人也看中了这个女人,这个女人发现第二个男人比第一个更好,接受了第二个男人,同时反悔拒绝了第一个男人,第二个男人高兴地向策划者报告自己配对成功一个女人,第一个男人沮丧地报告自己没有配对。

男人向女人求爱propose这个过程必须是同步的,一直等到他能得到一个求爱结果的答案,但是所有其他的联系都是异步的。

注意Erlang的OTP-sense的同步调用还和通常Java/C#中通过堵塞线程调用实现的同步不同。这里的同步通讯还是通过异步消息传递,但是调用过程是异步等待直到获得一个回应才继续向下执行。

Erlang的源码:Github


erlang      异步编程      算法     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com