抖音开放平台Logo
开发者文档
“/”唤起搜索
控制台
  • 开发指南
  • 运行时
  • 游戏引擎
  • 开放能力
  • 基础能力
  • 网络请求
  • 代码包
  • 小游戏插件
  • 用户授权
  • 渲染
  • 权限
  • 模块化
  • 场景值
  • 游戏交互
  • 音频
  • 视频
  • 多线程 Worker
  • 性能优化
  • 开放接口
  • AI
  • 安全指引
  • 安全指引
  • 多线程 Worker

    收藏
    我的收藏

    步骤

    配置Worker信息

    { "deviceOrientation": "portrait", "workers": "workers" }

    添加 Worker 文件

    touch workers/request/index.js touch workers/request/utils.js touch workers/response/index.js

    编写 Worker 代码

    // worker线程中,无法访问tt全局对象 function fibonacci(n) { console.log("worker show") } worker.onMessage(function (res) { console.log(`worker start`); });

    在主线程中初始化线程

    // 创建 Worker const worker = tt.createWorker('workers/calculator.js');

    在主线程中发送信息给worker

    // 向 Worker 发送消息,开始计算 worker.postMessage({ type: 'calculate', payload: 40 });

    分包预加载与worker能力的配合

    确保在完成一个 Worker 能力后,先关闭该 Worker,再于分包或主线程中启动其他 Worker 能力
    worker能力详情请查看worker实例
    分包预加载 详情请查看分包加载
    在并行执行的任务中,小游戏会静默加载分包预加载任务

    开发常见问题

      1.在某个 Worker 完成任务后,需要手动将线程关闭,调用 Worker.terminate 方法
      2.分包之间的worker线程遵循同一原则,必须关闭上一个worker线程,才能开启下一个worker

    Tips

      1.Worker线程数量有且只有一个,而且需要在根目录声明并创建game.json,显式声明workers字段
      2.Worker目录中,不能调用tt系列的 API
      3.Workers 之间不支持发送消息
      4.Worker 目录内只支持放置 JS 文件,其他类型的静态文件需要放在 Worker 目录外
      5.Worker 的入口文件在调用 tt.createWorker 时指定,开发者可动态指定 Worker 入口文件
      6.Worker 线程是一个独立的运行环境,它无法访问主线程中的 tt 全局对象,分包加载必须在主线程中完成