美文网首页
Dart中多核CPU的利用

Dart中多核CPU的利用

作者: 刘铁崧 | 来源:发表于2020-11-18 15:29 被阅读0次

Isolate

Dart是单线程的,这个线程有自己可以访问的内存空间以及需要运行的事件循环,这个空间可以称之为是一个isolate。
Flutter中有一个root isolate,负责运行flutter代码(UI渲染、用户交互等)

简单实用isolate

void main() {
  print("start");
  Isolate.spawn(addFunc, 3);
  print("end");
  // runApp(MyApp());}
void addFunc(int count){
  var total = 0;
  for (var i = 0; i < count; i++){
    total += 1;
  }
  print(total);
}
Debug service listening on ws://127.0.0.1:65051/xf8TMtGS2nk=/ws
Syncing files to device iPhone 12 Pro Max...
flutter: start
flutter: end
flutter: 3

isolate的反向向通信

Future<void> main() async {
  print("start");
  // 创建管道
  ReceivePort receivePort = ReceivePort();
  // 创建isolate
  Isolate isolate = await Isolate.spawn<SendPort>(testISO,receivePort.sendPort);
  // 监听管道
  receivePort.listen((message) {
    print(message);
    // 关掉管道与isolate
    receivePort.close();
    isolate.kill();
  });
  print("end");
  // runApp(MyApp());
}
void testISO(SendPort sendport){
  sendport.send("消息");
}
Debug service listening on ws://127.0.0.1:50021/2MBbGZk0pe0=/ws
Syncing files to device iPhone 12 Pro Max...
flutter: start
flutter: end
flutter: 消息

Flutter开发中如果想要创建,有更好的封装方法:compute
注:testISO必须是static或者顶层函数

class _ESTestState extends State<ESTest> {
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    testIsolate();
  }
  Future<void> testIsolate() async {
    print("start");
    var result = await compute(testISO,"hello");
    print(result);
    print("end");
  }
  @override
  Widget build(BuildContext context) {
    return RaisedButton();
  }
}
String testISO(String message){
  return message + "world";
}

相关文章

  • Dart中多核CPU的利用

    Isolate Dart是单线程的,这个线程有自己可以访问的内存空间以及需要运行的事件循环,这个空间可以称之为是一...

  • 多进程架构 child_process

    面对单进程单线程对多核使用不足的问题,理想状态下每个进程各自利用一个cpu,以此实现多核CPU的利用,nodejs...

  • java高级用法之:绑定CPU的线程Thread-Affinit

    简介 在现代计算机系统中,可以有多个CPU,每个CPU又可以有多核。为了充分利用现代CPU的功能,JAVA中引入了...

  • 为什么要使用多线程?

    充分利用多核CPU多线程可以真正充分利用和发挥多核CPU的优势,同时独立完成N个任务而不互相干扰。 提高运行效率可...

  • python多进程

    参考: python并发编程之多进程(实践篇)python中的多线程无法利用多核优势,如果想要充分地使用多核CPU...

  • iOS多线程与线程同步技术

    为什么要学习多线程编程? 多线程编程能够更加充分合理的利用操作系统多核cpu,能让多核cpu并发执行多个任务,比如...

  • cpu、java内存模型

    多核心CPU和多个CPU 多核CPU多核CPU即1个CPU有多个核心,可以理解为是多个CPU,这些CPU集成在一个...

  • CompletableFuture让你的代码免受阻塞之苦

    前言 现在大部分的CPU都是多核,我们都知道想要提升我们应用程序的运行效率,就必须得充分利用多核CPU的计算能力;...

  • CompletableFuture 让你的代码免受阻塞之苦

    前言 现在大部分的CPU都是多核,我们都知道想要提升我们应用程序的运行效率,就必须得充分利用多核CPU的计算能力;...

  • Python基于进/线程池实现大数据量爬虫项目

    如今计算机已经进入多核CPU的时代了,使用多线程或多进程能够充分利用CPU多核性能来提高程序的执行效率。 Pyth...

网友评论

      本文标题:Dart中多核CPU的利用

      本文链接:https://www.haomeiwen.com/subject/leenbktx.html