【文件属性】:
文件名称:harmonyos2-harmony:JS的多版本并发控制
文件大小:57KB
文件格式:ZIP
更新时间:2021-07-01 15:31:48
系统开源
和声2
和谐:JS的多版本并发控制
和谐是一种尝试,将其移植到像
JavaScript
这样的单线程上下文中。
目标是提供一种方法来在称为“refs”的可变值上构建一组操作(“事务”),安排它们中的每一个运行,然后在一个滴答声中原子地提交所有突变。
通过将事务拆分为多个“thunk”操作,它允许我们在事务中执行
CPU
密集型工作,同时定期让主线程允许其他工作发生。
如何拆分工作并安排它运行的确切策略留给读者作为练习。
:beaming_face_with_smiling_eyes:
为了做到这一点,我们借用了跟踪“ref”的“交易中”值的想法,我们希望将其与共享的全局值分开。
这样,一个事务可以随着时间的推移建立它的结果,然后当它运行到完成时,将最终结果提交为
ref
的新全局值。
Transactions
和
refs
具有以下属性:
任何东西都可以随时“读取”一个
ref
值。
Refs
只能在事务中更改(或“写入”)。
ref
中的值不应该只发生变异;
应该首选不可变数据
事务和操作可以读写多个引用
许多事务可以同时启动。
每个事务都会跟踪事务中使用的每个
ref
的当前值。
提交事务将立即自动更新其所有引用。
如果事务读取/写入
ref
【文件预览】:
harmony-master
----build.ts(3KB)
----.gitignore(47B)
----package.json(427B)
----Makefile(251B)
----package-lock.json(176KB)
----src()
--------index.ts(6KB)
----jest.config.js(142B)
----tsconfig.json(6KB)
----README.md(7KB)
----tests()
--------test.ts(4KB)