|
|
空灵语言更新记录 - 版本 2.3.9
2025.12.11
事件驱动机制其实早已实现,今天是例行更新 版本号不变,对比其他语言,比如VB 的事件驱动(桌面应用)特点:
1. GUI 组件内置事件
2. 事件与控件直接绑定
3. 通常是同步执行
4. 主要用于桌面应用程序
而对于空灵语言的事件驱动机制是
1. 使用异步非阻塞
2. 显式运行事件循环
3. 事件可以跨进程、跨网络
4. 事件可以是任何可序列化的数据结构
5. 事件可以是消息、数据包、HTTP请求等
也就是说空灵语言的事件驱动机制是覆盖面更广的场景和更灵活的实现方式。而不是单纯的GUI事件处理。
本次更新主要针对空灵语言的事件驱动机制进行了部分优化和增强。
1:重写了异步调度模块的事件循环核心
2:新增高性能事件轮询机制
3:修复了事件循环中的内存泄漏问题
4:支持泛型回调,可处理任意类型的事件数据
5:添加了回调链和事件冒泡支持
6:添加了事件批处理机制,减少系统调用开销
7:支持事件队列的动态扩容和收缩
=== 示例代码对比 ===
VB6事件处理:
Private Sub Command1_Click()
MsgBox "按钮被点击了!"
End Sub
VB.NET事件处理:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MessageBox.Show("Button clicked!")
End Sub
Delphi事件处理:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Button clicked!');
end;
空灵语言事件处理有三种方式任意其一即可:
# 函数式风格
按钮.点击时 执行 (事件: 点击事件):
打印 "按钮被点击了!"
# 面向对象风格
类型 按钮处理器 = 引用 对象
过程 处理点击(自身: 按钮处理器, 事件: 点击事件) =
打印 "按钮被点击了!"
按钮.点击时(按钮处理器().处理点击)
# 异步事件处理
按钮.异步点击时 执行 (事件: 点击事件) {.异步.}:
让 结果 = 等待 异步处理点击(事件)
打印 "异步处理完成: ", 结果
VB 事件驱动:像餐厅点餐
顾客(事件)来了 → 服务员(事件处理器)立即服务
一次服务一个顾客
简单直接
空灵 事件驱动:像餐厅叫号系统
顾客点餐后拿号等待
厨房(事件循环)按顺序处理多个订单
顾客可以做其他事,不干等
高效处理大量订单
|
|