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

武威市市建设局网站建筑业管理网站制作 青岛

武威市市建设局网站建筑业管理,网站制作 青岛,自动点击器怎么用,图们市建设局网站0 说明 该系列教程主要是为有一定语言基础 C/C的程序员,快速学习一门新语言所采用的方法,属于在C/C基础上扩展新语言的模式。 1 async和await 在Dart语言中,虽然没有像其他语言(如Java、C、Python)中的传统多线程概…

0 说明

该系列教程主要是为有一定语言基础 C/C++的程序员,快速学习一门新语言所采用的方法,属于在C/C++基础上扩展新语言的模式。

1 async和await

在Dart语言中,虽然没有像其他语言(如Java、C++、Python)中的传统多线程概念,但它采用了异步(asynchronous)编程模型来处理并发任务。Dart使用async和await关键字来支持异步操作,这可以在很大程度上达到类似多线程的效果,但实际上是基于单线程的事件循环机制。

异步主要涉及2个关键词:async和await。async 是让方法变成异步,await是等待异步方法执行完。两个关键字的约束如下:

  • 只有async方法才能使用await关键字去调用方法。
  • 如果调用别的async方法必须使用await关键字。

这里以一个http服务为例来解读这两个关键字的使用,代码如下所示:

import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {// 发起HTTP GET请求final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts/1'));if (response.statusCode == 200) {final responseData = json.decode(response.body);print('Title: ${responseData['title']}');print('Body: ${responseData['body']}');} else {print('Request failed with status: ${response.statusCode}');}
}

2 隔离 Isolate机制

在Dart中本身是没有多进程概念的,但可以使用Isolate隔离机制来实现多进程效果。Isolate是一种轻量级的并发执行单元,可以在不同的线程中运行代码(说明:每个isolate 都有一个完整的事件循环机制,每个隔离区都有自己的内存堆,确保每个隔离区的状态都不会被其他隔离区访问,隔离这种机制更像是进城而非线程)。这里制作一个demo,模拟 主线程循环输出aaa,子线程循环输出bbb,各输出5次,代码实现如下所示:

import 'dart:isolate';void main() {startChildIsolate();for (var i = 0; i < 5; i++) {print("aaa");sleep(Duration(seconds: 1));}
}void startChildIsolate() async {final isolate = await Isolate.spawn(childIsolate, null);
}void childIsolate(dynamic message) {for (var i = 0; i < 5; i++) {print("bbb");sleep(Duration(seconds: 1));}
}

命令执行效果如下所示:

Connecting to VM Service at ws://127.0.0.1:59390/qHZyzE0WjeQ=/ws
aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
---------

3 Isolate 隔离-双向通讯

这里主要通过Isolate机制构建了一个主线程和一个子线程并进行双向通信,主要使用SendPort和ReceivePort。代码实现如下:

import 'dart:isolate';var anotherIsolate;void startMainIsolate() async {var receivePort = ReceivePort();var sendPort;anotherIsolate = await Isolate.spawn(threadIsolateInit, receivePort.sendPort);receivePort.listen((date) {if (date is SendPort) {sendPort = date;print("双向通讯建立成功");return;}print("主线程 接收消息:data = $date");sendPort.send("XXXXX");});
}void threadIsolateInit(SendPort sendPort) async {var receivePort = ReceivePort();print("子线程 接受到来自 主线程的port,尝试建立同主线程的双向通讯");receivePort.listen((date) {print("子线程接收消息:data = $date");});sendPort.send(receivePort.sendPort);for (var index = 0; index < 10; index++) {sendPort.send("子线程 发送消息:$index");}
}void main() {startMainIsolate();
}

运行效果如下:

onnecting to VM Service at ws://127.0.0.1:60037/CvPyFfwECy8=/ws
子线程 接受到来自 主线程的port,尝试建立同主线程的双向通讯
双向通讯建立成功
主线程 接收消息:data = 子线程 发送消息:0
主线程 接收消息:data = 子线程 发送消息:1
主线程 接收消息:data = 子线程 发送消息:2
主线程 接收消息:data = 子线程 发送消息:3
子线程接收消息:data = XXXXX
主线程 接收消息:data = 子线程 发送消息:4
子线程接收消息:data = XXXXX
主线程 接收消息:data = 子线程 发送消息:5
子线程接收消息:data = XXXXX
主线程 接收消息:data = 子线程 发送消息:6
子线程接收消息:data = XXXXX
主线程 接收消息:data = 子线程 发送消息:7
子线程接收消息:data = XXXXX
主线程 接收消息:data = 子线程 发送消息:8
子线程接收消息:data = XXXXX
主线程 接收消息:data = 子线程 发送消息:9
子线程接收消息:data = XXXXX
子线程接收消息:data = XXXXX
子线程接收消息:data = XXXXX
子线程接收消息:data = XXXXX

http://www.hyszgw.com/news/79290.html

相关文章:

  • 怎么建设国际网站企业网站引导页模板
  • 网站加速器免费安卓电子商务网站建设市场
  • 网络推广优化网站免费空间服务器
  • 织梦仿非织梦网站海南建设交易中心网站
  • 灰蓝 网站模板樱花大黄云服务器
  • 网站开发一般用什么软件wordpress旧版本下载
  • 磐安网站建设公司网站前后端用什么软件做
  • 宜兴网站开发毕业设计如何用dw做网站
  • 长沙民政计算机网站建设wordpress修改文章模板
  • 做淘宝客没有网站怎么做百度seo搜索引擎优化厂家
  • 沈阳网站开发技术公司网站同时做竞价和优化可以
  • wordpress 聚美优品桂林seo公司
  • 网站域名注册备案教程贵州网站制作哪家好
  • 网站空间月流量网站开发顶岗周记
  • 西安网站开发公司有哪家电子邮件网络营销方式
  • 如何选网站空间个人网站虚拟主机
  • 莘县网站建设价格长沙市建设网站平台的公司
  • 安阳网站设计哪家好成都公司网页制作
  • 做棋牌游戏网站犯法吗淘宝客做的好的几个网站
  • 会计公司网站模板下载wordpress 添加pdf
  • 摄像机怎么在自己家网站做直播宣传片制作公司排行
  • 厦门市住房和城乡建设局网站首页刷排名的软件是什么
  • 重庆做网站的公司有哪些最出名的网站建设公司
  • 一嗨租车网站建设的功能特色网络营销推广服务合同
  • 查公司信息的网站三网合一网站报价
  • 网站怎样做淘宝客app开发公司的联系方式
  • 怎么查网站备案接入商惠东做网站报价
  • 微信怎么做网站的动图网站服务公司排名
  • 平面设计素材免费网站有哪些wordpress朗读功能
  • 高端开发网站系统wordpress不能访问