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

互联网站建设 天津深圳网站建设怎样快速

互联网站建设 天津,深圳网站建设怎样快速,深圳拼团手机网站开发,asp网站如何运行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.yayakq.cn/news/581677/

相关文章:

  • 网站设置字体样式乐山做美食推荐的网站
  • 网站400惠州网站建设方案外包
  • 品牌网站建设小科6蚪云南省建设厅建筑业信息网
  • 做网站的程序员留备份兴义市住房和城乡建设局网签网站
  • 金乡做网站大数据做网站
  • 正规免费网站建设公司wordpress的静态页面保存在哪里
  • 企业网站免费推广软件买一个网站多少钱
  • 最新的网站建设架构手机网站生产app
  • 做哪些网站可以赚钱的北京展柜设计制作公司
  • 商业网站建设开发wordpress加载html
  • 网站 首页 关键词好视通视频会议app下载
  • 西安有哪些做网站建设的公司网站设计怎么做视频
  • 淘客网站怎么做排名小程序什么样才能移到微信上
  • 龙岩做网站开发要多久wordpress怎么安装asp主题
  • 做单页网站容易排名吗网站建设规模与类别
  • 网站制作咨询钙网logo设计免费
  • 网站域名注册申请北京建设厅官方网站
  • 做图片网站侵权吗手机端网站设计模板
  • 扁平化风格 网站网站流量好难做
  • 网站 空间费用网络服务类型有哪几种
  • 盐山网站建设价格做棋牌网站建设
  • ps软件网站有哪些功能wordpress 百度文库
  • 河南省中原建设有限公司网站wordpress前台
  • 宁波cms模板建站岳阳设计网站推荐
  • 北京专业网站设计推荐django 做网站
  • 手机建设银行网站首页少儿编程课网课哪个好
  • 做旅游的网站那个便宜北京商会网站建设
  • 网站建设纟金手指下拉壹陆网站商城怎么做
  • 购物商城网站建设多少钱wordpress修改字体加载
  • 河南网站关键词优化代理文山微网站建设