首页 > 解决方案 > 为什么 Flutter 不重用之前创建的线程?

问题描述

我在 Flutter 应用程序的单独 Isolate 中运行耗时的计算。我正在compute为此使用功能。

class _MyPageState extends State<MyPage> {

  int _result = 0;

  void someAction() async {
    int result = await compute(timeConsumingFunction, 40);
    setState(() {
      _result = result;
    });
  }

  @override
    Widget build(BuildContext context) {
      return Column(
        children: [
          Text('$_result'),
          MaterialButton(
              child: Text("Run action"),
              onPressed: someAction
            )
        ]
      );
    }
}

每次用户点击按钮时,在 Xcode 分析器中,我都会看到创建了新的 ThreadPool Worker。

  1. 为什么 Flutter 不重用之前创建的 ThreadPools?
  2. 以这种方式运行计算功能可以吗?还是有更好的方法?
  3. 我应该关心线程池的数量吗?

在此处输入图像描述

标签: iosxcodemultithreadingflutterdart

解决方案


推荐阅读