Skip to content

异步、取消与线程语义

Readori 使用 Swift Concurrency;JavaScriptCore context 固定在专属串行队列,避免跨线程访问 导致 EXC_BAD_ACCESS。WKWebView 操作位于 MainActor。

规则

  • 用户停止/切换/退出会取消关联 Task;
  • callback 安装结果前检查 generation/request identity;
  • timeout 取消底层请求而非只停止等待;
  • background/thermal state 传播到验证、预取、TTS 和 WebView;
  • 不在 JS 串行队列做不可取消长 sleep;
  • UI 更新回 MainActor,网络/解析/分页不占主线程。

脚本回调和异步宿主操作必须桥接 Swift cancellation,不能让旧请求覆盖新书、新章节或新 TTS 引擎。

Readori 使用与开发文档