px普贤教程PuXian
普贤教程 › 包参考

semaphore 包

信号量(计数限流)

⚠️ 含并发(mutex)—— 必须编译模式运行(px build);

项值
包名semaphore
版本0.2.0
可用版本0.1.0 / 0.2.0
入口semaphore.px
分类并发与通用模式
文件数 / 行数1 / 87

安装与引入

bash
pxpkg init          # 首次
pxpkg add semaphore@0.2.0
pxpkg install
px
import semaphore
所属分类教程:并发与通用模式

公开接口

函数参数
sp_newn
sp_acquiresem
sp_try_acquiresem
sp_releasesem
sp_availablesem
其余 5 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
sp_new_capacityn, max_capacity
sp_try_acquire_timeoutsem, timeout_ms
sp_statssem
sp_is_fullsem
sp_usagesem

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/semaphore —— 信号量(计数限流)
------------------------------------------------------------
⚠️ 含并发(mutex)—— 必须编译模式运行(px build);
解释器 px run 是 Mini 子集,无并发原语(PX-DEF-006)。
var sem = sp_new(2)               # 2 个许可
sp_acquire(sem)                   # 阻塞直到有许可
sp_try_acquire(sem) → Ok(true|false)(非阻塞尝试)
sp_release(sem)                   # 归还许可(多归还 → Err)
sp_available(sem)                 # 当前可用许可数
实现:mutex 保护计数器 + 自旋等待(sleep 1ms);无 native 条件变量。
============================================================
创建信号量 → 计数 dict