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

如何建设彩票网站学校网站建设与维护

如何建设彩票网站,学校网站建设与维护,做网站不需要编程的软件,广告投放数据分析在flutter中如果要使用线程#xff0c;需要借助Isolate来实现。 简介 在Flutter中#xff0c;Isolate是一种轻量级的线程解决方案#xff0c;用于在应用程序中执行并发任务。Isolate可以被认为是独立于主线程的工作单元#xff0c;它们可以在后台执行任务而不会阻塞应用程…在flutter中如果要使用线程需要借助Isolate来实现。 简介 在Flutter中Isolate是一种轻量级的线程解决方案用于在应用程序中执行并发任务。Isolate可以被认为是独立于主线程的工作单元它们可以在后台执行任务而不会阻塞应用程序的用户界面。 Isolate提供了多线程编程的能力允许开发者在应用程序中同时执行多个任务从而提高应用程序的性能和响应能力。每个Isolate都有自己独立的内存空间和执行环境它们之间可以通过消息传递进行通信。 在Flutter中可以使用dart:isolate库来创建和管理Isolate。通过创建一个Isolate对象可以指定要执行的任务代码。Isolate可以执行耗时的计算、网络请求、文件操作等任务而不会阻塞应用程序的主线程。 与其他线程解决方案相比Isolate的一个重要特点是它们之间的内存是隔离的这意味着每个Isolate都有自己独立的内存空间它们之间不能直接共享数据。为了在Isolate之间传递数据可以使用消息传递机制即将数据打包成消息发送给目标Isolate并在接收端解包处理。 使用Isolate可以提高应用程序的性能和响应能力特别是在处理大量计算密集型任务或需要与外部资源进行交互的场景中。然而需要注意的是Isolate的创建和销毁都会带来一定的开销因此在使用Isolate时需要权衡资源消耗和性能提升之间的平衡。 总而言之Isolate是Flutter中的一种轻量级线程解决方案用于在应用程序中执行并发任务。它们可以独立于主线程执行任务并通过消息传递机制进行通信。使用Isolate可以提高应用程序的性能和响应能力特别是在处理计算密集型任务或需要与外部资源进行交互的场景中。 匿名函数使用 void _incrementCounter() {setState(() {_counter;});// 匿名线程Isolate.spawn((message) {print(匿名函数线程$message);}, 哈哈哈); }参数会被传递到匿名函数中并被匿名函数所使用。 普通函数 void _incrementCounter() {setState(() {_counter;});// 普通线程Isolate.spawn(newThread1, 普通线程);}// 创建一个额外线程 void newThread1(String message){print(message); }这个一定要注意在flutter中使用时newThread1不能写在主进程所在的类里。否则会提示[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Illegal argument in isolate message: object is unsendable - Library:dart:async Class: _AsyncCompleter4048458 (see restrictions listed at SendPort.send() documentation for more information) 子线程向主线程通信 // 创建一个额外线程 void newThread1(SendPort mainThreadPort) {int num 0;Timer.periodic(const Duration(seconds: 1), (timer) {// 每隔1秒num加1num 1;mainThreadPort.send(num);if (num 10) {// 向主进程发消息执行完成mainThreadPort.send(stop);}}); }class _MyHomePageState extends StateMyHomePage {final receivePort ReceivePort();void _incrementCounter() async {// 子线程final isolate await Isolate.spawn(newThread1, receivePort.sendPort);// 监听子线程发送的消息receivePort.listen((message) {print(子线程发送的消息$message);if (message stop) {// 执行完成则停止显示print(线程执行完成);isolate.kill(priority: Isolate.immediate);}});}overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),body: const Center(child: Text(多线程)),floatingActionButton: FloatingActionButton(onPressed: _incrementCounter,tooltip: Increment,child: const Icon(Icons.add),), // This trailing comma makes auto-formatting nicer for build methods.);} }主线程向子线程通信 在子线程执行期间主线程也可以向子线程进行通信。基于上面的代码进行简单修改 void newThread1(SendPort mainThreadPort) {int num 0;ReceivePort receivePort ReceivePort();Timer.periodic(const Duration(seconds: 1), (timer) {// 每隔1秒num加1num 1;mainThreadPort.send(num);if(num1){// 跟主进程类似将receivePort.sendPort传递给主进程主进程才能向子进程通信mainThreadPort.send(receivePort.sendPort);}if (num 10) {// 向主进程发消息执行完成mainThreadPort.send(stop);}});// 接收主进程发送的消息receivePort.listen((message) {print(收到了主进程的消息$message);}); }void _incrementCounter() async {// 子线程final isolate await Isolate.spawn(newThread1, receivePort.sendPort);late SendPort childSendPort;// 监听子线程发送的消息receivePort.listen((message) {print(子线程发送的消息$message);if (message is SendPort) {childSendPort message;}if (message 6) {childSendPort.send(加油马上完成了);}if (message stop) {// 执行完成则停止显示print(线程执行完成);isolate.kill(priority: Isolate.immediate);}});}怎么理解呢 子线程要想向主线程通信需要获取到主线程的receivePort.sendPort因此在子线程已创建就以参数的形式将主线程的receivePort.sendPort传递给子线程。 同理主线程要想向子线程通信也需要拿到子线程的receivePort.sendPort因此在子线程一开始执行就将自己的receivePort.sendPort发送给主线程。 只有主线程、子线程都拿到对方的receivePort.sendPort 才可以进行互相通信。
http://www.pierceye.com/news/661479/

相关文章:

  • 小说网站模板温州建设集团有限公司网站
  • 医疗器械为什么做网站杭州网站制作培训
  • 村志网站建设品牌设计logo图片
  • 网站更新服务公司网页打不开显示404要怎么处理
  • 注册公司是在哪个网站网站建设案例步骤
  • 机械设备网站源码中国神鹰网站建设
  • access 网站源码安阳市地图
  • 临沂房产和房建设局网站双和关键词排名怎么查
  • 建网站多少费用301不同类型网站
  • 深圳seo网站排名优化贵州省都匀市网站建设
  • 个人网站风格设计做网站时需要注意什么问题
  • 时装网站建设的背景软装设计费用
  • 排名轻松seo 网站国内开源平台
  • 常德做网站公司哪家好雷达图 做图网站
  • 做网站的环境配置wordpress手机版本
  • 市场网站建设济南智能网站建设
  • 淄博网站的优化大数据开发过程
  • 德阳网站建设公司做抢单软件的网站
  • 金融类的网站怎么做地方门户网站建设多少钱
  • 网站建设周末培训长春网站建设服务
  • 网站宝建站助手呼市地区做网站公司
  • 网站开发需要用到哪些设备建立网站得多少钱
  • 广州最好网站策划外网网站有什么好的推荐
  • 企业营销型企业网站建设cpa推广联盟平台
  • 南山区公司网站制作网站建设都 包括哪些
  • 域名备案网站建设方案公司网站设计怎么做
  • wordpress网站地图生成插件门户网站管理流程
  • 网站设计工程师培训关键词排名优化公司外包
  • 做电影资源网站手机版交通运输部: 优化交通运输领域防控
  • 找人做微信网站无锡响应式网站