核心功能特性
环形缓冲区可视化
以动画形式实时展示环形缓冲区的内存布局。每个槽位用独立的方块表示,写指针和读指针用不同颜色的箭头标识。当生产者写入数据或消费者读取数据时,对应槽位会高亮闪烁,指针自动移动。支持暂停、单步执行等调试模式,方便逐步观察数据流。
生产者/消费者Worker管理
一键启动和停止生产者Worker与消费者Worker。每个Worker在独立的Web Worker线程中运行,通过SharedArrayBuffer与主线程共享环形缓冲区。支持同时运行多个生产者和消费者,模拟真实的多对多并发场景。Worker状态面板实时显示每个线程的运行状态和操作计数。
原子操作演示
详细展示Atomics.load()、Atomics.store()、Atomics.add()、Atomics.compareExchange()、Atomics.wait()、Atomics.notify()等核心原子操作的调用过程。每次操作都会在日志面板中记录操作类型、参数值、返回值和执行线程,帮助开发者理解原子操作的语义和行为。
写指针/读指针
环形缓冲区的写指针(writeIndex)和读指针(readIndex)使用Atomics API进行原子更新,确保多线程环境下的数据一致性。工具界面上以动态箭头标注两个指针的当前位置,并显示指针的数值变化历史。当缓冲区满或空时,指针的等待行为也会被清晰展示。
操作速度调节
通过滑块控制生产者和消费者的操作速度,范围从极慢(每秒1次操作)到极快(每秒100次操作)。速度调节通过控制Atomics.wait()的超时时间和Worker内部的sleep间隔来实现。用户可以将生产者调快、消费者调慢,观察缓冲区满时的阻塞行为,反之亦然。
实时日志
以滚动日志的形式记录所有SharedArrayBuffer和Atomics相关的操作。日志条目包含时间戳、操作类型、执行线程、参数值、返回值等完整信息。支持按线程类型(生产者/消费者/主线程)过滤日志,支持搜索特定操作类型,支持暂停日志滚动以便仔细查看。
模拟模式Fallback
当浏览器不支持SharedArrayBuffer或未设置COOP/COEP响应头时,工具自动切换到模拟模式。模拟模式使用普通的ArrayBuffer配合自旋锁(Spinlock)模拟共享内存的行为,在功能和视觉效果上与真实模式保持一致,确保所有用户都能体验完整的演示功能。
UD5工具箱