Erlang Multicore Programming讲座小记

这个是对于Ulf在qcon大会上的演讲的简单小笔记,首先Ulf一上来先介绍了一点背景知识,然后引出了小例子,就是典型的map函数,先是一个基本的串行的例子,非常简单,就是
map(F, L) -> [F(X) || X <- L].
然后举出并行的完成同样功能的小例子,就是pman
pman(F, L) ->
Pids = [spawn(fun() ->
Parent ! {self(), F(X)}
end) || X <- L],
[receive {Pid, Res} -> Res end || Pid <- Pids].
但是这里可能出现的问题就是比如函数死掉啊,receive就永远停那了,改进比如可以catch住,之类的,总之结论就是这种并行,必然涉及到很多的启动process,之间收发消息,结束process的过程,是很费力的,所以实践当中要去测量看看划不花算,Erlang的轻量级进程是作为actor针对unix的process或者pthread来说的,本质上不是把这种sequential的编码给并行化,用Erlang的并行还是应该用它的分布式的概念上面。

然后提到了SMP的一些并行中的问题,比如并行时候的bug就很麻烦,是timing related通常只有在大型项目执行的时候才能触发到这种偶然的巧合情况,而那个时候,又是没办法调试的,这种问题的本质就是没办法在单元测试的环境下控制系统的执行过程,解决的方法之一就是QuickCheck解决了这种层次的并行测试。大致介绍QuickCheck的概念,理论上说是property based testing但是没人听得懂,说的通俗点就应该是model based testing,然后开始拿自己之前的一个proc_reg作为例子,是Ulf自己以前写的注册进程的一个东西。

串行运行QuickCheck的时候,没有问题,并行的时候,几乎不用改动所写,只换了个调用库就行了,然后出错,出错的时候错误的表示跟原来串行的时候有所变化了,是前边一部分的sequential prefix相当于把系统置于某一个状态,这部分就是相当于达到产生错误的前提,串行并行不影响,如果可以shrink掉的话,也一样会被简化,就像我做其它的时候,这里有时候就是[]了,表示没什么了。总之,对这里最有关键的是后边的parallel component部分,并行运行两个命令,返回的结果也表示了,一个true另外一个exception然后,用运行时候的时间图来表示,显示一下运行的这个过程,这个图的话我还没找到怎么生成,想着应该是用pulse一下的,最后可以缩小范围之后,可以加入atomic的控制,进行修复,再改正了之后,就基本没问题了,基本是因为QuickCheck只开启两个进程,不过我想,这里QuickCheck可以再改进,就是真正到了十分确信某个版本应该工作之后,可以加大并发的数量,可以不去真的做shrinking但是,简单的加大并行,能够验证是不是真的改对了之类的。

最后的结论就是SMP很难,但是有了QuickCheck他们会更好的弄的,呵呵,感谢爱立信花钱请人弄了这么好的库然后给我们用。
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值