惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Heimdal Security Blog
SecWiki News
SecWiki News
H
Hacker News: Front Page
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
AI
AI
C
Cybersecurity and Infrastructure Security Agency CISA
Scott Helme
Scott Helme
PCI Perspectives
PCI Perspectives
S
Securelist
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cyberwarzone
Cyberwarzone
A
Arctic Wolf
Forbes - Security
Forbes - Security
T
Tor Project blog
Spread Privacy
Spread Privacy
WordPress大学
WordPress大学
I
Intezer
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
博客园 - 司徒正美
W
WeLiveSecurity
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
P
Palo Alto Networks Blog
Google DeepMind News
Google DeepMind News
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
V
Vulnerabilities – Threatpost
Jina AI
Jina AI
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
T
Threatpost
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
在 CodeLab Adapter 中实现 Linda 并发模型
种瓜 · 2020-12-11 · via 夜行人

文章目录

本周我们在 CodeLab Adapter 里基本实现了 Linda 并发模型,没有采用Linda 初始论文(1986)的策略,而是采纳了 Alan Kay 今年年初接受采访时提到的想法: “在对象之间 协商 意义,在 pub/sub 中实现它”。

Linda 是 CodeLab Adapter 4.0 的基础,不久将发布。 有了 Linda,我们距离 Bret 在 Dynamicland 所构建的基础架构已经不远。

我们将 Linda tuple space 实现为 server,在技术层面,它是一个 Adapter Node,内置在 CodeLab Adapter 之中,可为任何 Adapter Node 提供 Linda tuple space 服务。

如此一来,在空间中协调不同事物(object)变得极为简易,这鼓励编程者大胆去想象,让事物随意去 talk ,而不必担心会被连接和协调的复杂性压垮(多进程/线程和状态共享是个灾难)。

完成度

我们目前实现了如下原语:

  • in
    • inp(非阻塞)
  • out
  • rd
    • rdp(非阻塞)
  • eval(使用宿主语言里的多任务(进程/线程/协程)机制,暂不实现 eval,除非未来要构建类似 erlang 的东西(从错误中恢复),才考虑实现 eval)

我们还构建了一些辅助工具,这部分是我自己的扩展,与 linda 原始想法无关,用于控制 linda server。

我已经完全习惯了 smalltalk 的开发方式: 随时去增强开发环境,这些辅助工具帮助我开发 linda 本身,它们让我方便与 Linda server 对象沟通。

  • dump
  • status
  • reboot

实验

以下是我们测试 Linda Node(它们扩展了原先了 AdapterNode 类)时的截图:

这个项目演示了两个 Adapter Node 的通信。

我们分别在 AdapterNode 和 AdapterNodeAio 里都实现 linda client,所以你也可以在 Python 异步代码中使用它。

使用原先的 AdapterNode 也可以做到这些,但不够优雅,而且内部实现复杂,复杂往往是可理解性和可生长性的敌人,linda 十分简单,采用 linda 之后,对象之间协调的变的惊人简单,这让 Adapter 可以进一步生长。

我最近处在 Alan Kay 的巨大影响之下: 用生物学视角看待软件。

性能

以下是一个大概的测试结果(2.3 GHz Intel Core i5)

在单一节点上,当ZMQ_LOOP_TIME为默认参数(0.02s)时

  • out/in/inp/rd/rdp: ~30帧/秒.

影响性能的主要是PUB/SUB的速率(数量级的影响),而不是机器本身的性能,所以在树莓派和高性能笔记本上,差异不大。

如果想提高linda通信速率,可通过修改 Adapter 的 ZMQ_LOOP_TIME 配置参数,ZMQ_LOOP_TIME 越小,linda通信速率越快 当 ZMQ_LOOP_TIME 为 ‘0.001’时,速率为 306 帧/秒。相应的代价是 Adapter Node 会占用更多CPU。

注意: Scratch中帧率稳定在30帧/s,如果逆向提高帧率,在 Scratch 并行操作即可。

问题

in/inp 原语, 没有遵循 CQRS原则(Scratch 拓展最佳实践 – 以 Cozmo 为例)。

未来

近期我们将基于 Linda 在 Neverland 2 中构建若干 demo。 采用 smalltalk 的迭代周期方法论: 在系统中构建应用, 以便于获得对系统的直观感受 ,并据此观察和迭代系统。

在未来, 我们可能会将 Linda 剥离出来,分享给社区。

近期内我们将完善不同语言的 client, 目前 python client 最完善的,我们正在实施

  • 系统调用 client
  • JavaScript client
  • rest api/http client

如果你想在 smalltalk 中使用它,可以先与 Python 互操作。

参考