执行模式
Diatom/用户手册/执行模式

执行模式、并发与生命周期

type 同时关系到脚本怎样执行,以及执行器是否复用。刚开始只需要区分“短命令”和“完整脚本”。

AHK 常用模式

写法 用途 执行方式
f 函数正文,提供 this 复用默认 AHK 池
c 调用函数 复用默认 AHK 池
jf、jc Job 中的函数正文/函数调用 复用 Job 进程池
ef、ec 独立进程中的函数正文/函数调用 复用独立进程池
d 完整脚本 新建默认解释器实例
j 完整脚本 新建 Job 进程
e 完整脚本 新建独立进程
l、jl、el 标签式正文 复用解释器,适合既有高级命令
t 调用指定接收目标 命名通信
r 内置动作 主程序原生执行

大小写会归一化,组合字母通常会排序;这不代表任意字母组合有效。不要自行发明 df、ae 等类型。

conf.toml 中的 no_dll=1 会把默认 AHK 执行器路由到 Job 进程,no_dll=2 路由到独立进程。因此 f 并不始终意味着实际运行在 DLL 内。

复用带来的影响

解释器可能已经加载过这个命令的函数、全局变量和库。重复调用不保证全新环境;两条命令也不应依赖“上次刚好分配到同一个执行器”。

read 主要服务于完整独立脚本的调试,不负责替换复用解释器中的函数或标签缓存。修改这类代码后重启,或使用适合独立调试的模式。

控制同名实例

limit=1:已有可连接的同名实例时跳过新实例。

limit=2:向已有实例发送退出请求,再建立新实例。

limit=3:已有实例时请求退出;没有实例时启动,可用于开关式服务。

这是通过同名接收端判断的行为,不是任意池函数的互斥锁,也不承诺强制杀死失去响应的进程。

退出时

Job 进程被设计为随根 Job 清理;独立 e 进程可能保留。默认解释器的实际生命周期还受 no_dll 影响。完整脚本执行完一次动作后,若不再需要常驻,可显式 ExitApp();池函数里不要随意 ExitApp(),它会结束整个执行器。

Python 常用 jp/ep,JavaScript 常用 js/es,PowerShell 常用 jw/w,Lua 常用 ju/du。使用前应确认相应运行时和基础脚本已配套。

用户手册

正在读取手册…