当前位置: 首页 > news >正文

杭州竞彩网站开发免费网站生成器

杭州竞彩网站开发,免费网站生成器,wordpress取第一张图片,哈尔滨模板建站品牌Flutter 作为一个跨平台的UI库,前面的Flutter 架构有涉及到,Flutter 架构中的运行的多个线程。那么最为一个Flutter开发者,我们如何创建线程呢 多线程 上述我们提及到了,架构层涉及的多线程问题。比如说 主线程, 平台线程&#x…

Flutter 作为一个跨平台的UI库,前面的Flutter 架构有涉及到,Flutter 架构中的运行的多个线程。那么最为一个Flutter开发者,我们如何创建线程呢

多线程

上述我们提及到了,架构层涉及的多线程问题。比如说 主线程, 平台线程GPU线程。本文讨论的及主线程,dart 运行在虚拟中的多线程问题。OK,言归正传。

线程模型

作为一个iOSer,我们在移动端开发的时候,会有多线程的应用场景。关于iOS中多线程我们会遇到线程同步的问题。比如说资源竞争,数据同步我们会引用到, 关于自旋互斥的面试问题也是考察比较多的。呢么flutter 的线程模型是啥呢。这里我们引入isolate

Isolate

flutter的线程是一个独立的Isolate, 每个Isolate 管理其属于自己的EventLoop (此处的设计思路和iOS中线程与RunLoop的关系是一样的)和JS的事件循环蕾丝,关于EventLoop事件循环后续会出文章解释,此处不提及。需要注意的是async 在没有创建新的Isolate时,还是会将事件推入主Isolate 的任务队列当中的。

Talk is cheap

言归正传,了解了flutter 中的线程模型。那我们如何创建新的Isolate。举个🌰,我们需要从文件中读取配置。在处理I/O费时操作的时候,我们一般会创建一个新的Isolate

dart Isolate 🌰
import 'dart:convert';
import 'dart:io';
import 'dart:isolate';void main(List<String> args) async {print("${Isolate.current.debugName}");final jsonData = await Isolate.run(_readAndParseJson);
}Future<Map<String, dynamic>> _readAndParseJson() async {final configuration = await File("configuration.json").readAsString();final jsonData = jsonDecode(configuration) as Map<String, dynamic>;print("${Isolate.current.debugName}");return jsonData;
}

输出结果如下

main
_RemoteRunner._remoteExecuteExited.
flutter🌰
import 'dart:convert';
import 'dart:io';
import 'dart:isolate';import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';void main() {runApp(const MainApp());
}class MainApp extends StatefulWidget {const MainApp({super.key});State<MainApp> createState() => _MainAppState();
}class _MainAppState extends State<MainApp> {String content = "内容占位符";void _updateContent() async {// Map<String, dynamic> configuration = await _readAndParseJson();print("${Isolate.current.debugName}");Map<String, dynamic> configuration = await _readAndParseJson();final name = configuration["name"];setState(() {content = name;});}Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text("jeverson's eg"),),body: Center(child: Text(content,style: const TextStyle(color: Colors.black),)),floatingActionButton: FloatingActionButton(onPressed: _updateContent,child: const Icon(Icons.update),),),);}
}Future<Map<String, dynamic>> _readAndParseJson() async {final configuration = await rootBundle.loadString("lib/configuration.json");return compute((message) {print("${Isolate.current.debugName}");return jsonDecode(configuration) as Map<String, dynamic>;}, configuration);
}

ByTheWay

演示代码中我们使用的是dart,使用的是run, 在flutter 中我们使用compute 函数。

TODOIsolate间通信

http://www.ds6.com.cn/news/21853.html

相关文章:

  • 怎样建网站 步骤佛山seo
  • 宁波网站建设运营微信营销方案
  • 免费网站正能量app应用大全北京seo推广优化
  • 外贸网站建设价格建设网站的十个步骤
  • 商业网站需要多少钱企业所得税优惠政策
  • 网站建设维护费一年多少钱找索引擎seo
  • 手机收藏网站代码品牌网络seo方案外包
  • 企业网站样式谷歌浏览器官网手机版
  • 新型网站设计南京seo
  • 网站开发留言板app推广方案
  • 昆明网页制作青岛关键词优化平台
  • 如何上传到网站根目录最新收录查询
  • 导航网站容易做吗全国防疫大数据平台
  • 做网站必须会编程吗常见的营销型网站
  • 网站备案名称中国开头宣传软文怎么写
  • 成都住建局官网咨询电话seo软件哪个好
  • 石家庄网站制作系统郑州抖音seo
  • 温州手机网站建设千万不要学网络营销
  • 网站 复制 收录被逆冬seo课程欺骗了
  • 大连建设厅网站宁波seo优化公司排名
  • 醴陵网站建设长春网站建设制作
  • 服务类网站开发生成关键词的软件
  • 受欢迎的天津网站建设seo技术306
  • 榆林网站建设vs0912seo免费工具
  • 广州网站建设年底促销杭州seo公司
  • 网站建设设计服务公司批量关键词调排名软件
  • 门户网站设计技巧推广员是干什么的
  • 平度网站建设注册网站需要多少钱?
  • 网站版权符号网站关键词排名优化电话
  • 想在拼购网站做产品代理推广月入5万