编程语言的工程实践my little pony_第1页
编程语言的工程实践my little pony_第2页
编程语言的工程实践my little pony_第3页
编程语言的工程实践my little pony_第4页
编程语言的工程实践my little pony_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MYLITTLEPONYLORETTA匈免咄banglnfoQ l —-—_——关注QCon

收获国内外一线大厂实践与技术大咖成长 @干货整理@大咖采访@行业趋势关于现主要语言为我要讲的PONY不也不PONY是什ActorOO高性DataDATARACEPony能讲的很多,比如actor但今天着重它比较特殊的地也没有原子操这种情况下如何实现并发安且是编译期并发安GLOBALMUTABLESTATEISNOT老生常谈比如简单的vara:Int两个线程同时改变a的不知道最后的结果是什WHYNOTUSELOCKS?锁了锁可是通常会 能瓶A写了新数据,可万一B其实并不需要保证一定要看 的状态呢还是得而且一个写不好就会变成我们都熟悉的面试问死锁,活锁。。为了保证多线程读写安全,现在最流行的方法是用immutabledata但每次改动都 ,对性能会有影的不想这么但现在的纯fp,性能还是达不到像C这样的程一切不可变,可能最后还是不够灵DATARACESAFETYLAWS当没有其他线程可以读或写的时候,才当没有其他线程可以写的时候,才这样就不会出现不确定 PONY’SANSWER:DENY既然只要遵循这两条黄金定那可以通过控制每个alias对数据的读写权利来达到数据争用DenyDenylocalISO–FORYOUREYESONLY可以在actor之间传但任何时间只有一个actor对其拥有读写权当actorA把一个iso传给actorB必须consumealias,即放弃actorA自身对这个iso的VAL–JUST可以在actor之间传谁都能谁也不能BOX-OPAQUE可以在actor之间传只知道它存谁都不能谁都不能REF–THE不可以在actor之间传随便多少都可以读为什么能保证安全actor内部操作都是同步所以写的时候必不会读,读的时候不会BOX–LOCALREADONLY不可以在actor之间传只能读,不能TRN–THEBLACKBOARDINACLASSROOM不可以在actor之间传但可以有任意多的alias可以既生REF,何生TRN既然actor内部都是同步的,何必用trn限制可以写的alias的个数呢因为有些时候数据在actor内部可变之后,想要从良变成不可这样可以把值传递给别的如果人尽可夫能写的alias太多,编译期就保证不了不可那就涉及到alias的类型转换了。我变,我变,我变变为什么ISO可以变成任何–actorA要把它送给别人,就要consume自身拥有的这个那之后原本iso指向的数据就没有了那之后在这数据之上创建的alias就可以拥有随意的读写控所以iso可以变成任何为什么TRN不能变成trn只能拥有一个writealias,但可以拥有无限多个read如果把本身的writealias,也就是trn,给consume了,仍然可能会有多个readalias存iso的定义是只能有一个alias,所以即使把trn给consume了,也变不成其他能变的不能变的都 的家庭作 关注lnfoQ第—时间浏览原创 资吕桥选伪

坛为面试改lli瓜编权,玫,tGit怂打氐尔贾炽,t

匾热点 S的Ill

刃问洒过i

IIC3ill.Oil心

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论