个人学习用
不严谨
学习的话请看别的博客
void main(){
/**
* 为了解决多线程带来的并发问题,Dart 使用 isolates 替代线程
* 所有的 Dart 代码均运行在一个 isolates 中。
* 每一个 isolates 有它自己的堆内存以确保其状态不被其它 isolates 访问。
*/
}
互相发送消息
//dart是单线程模型的语言,但是开发中我们经常会进行耗时操作,比如网络请求,这种请求会阻塞我们的代码
//dart的并发机制 叫 isolate ,
//App的启动入口main函数就是类似于Android主线程的主isolate
//和java的Thread不同,dart中的isolate是无法共享内存的
import 'dart:isolate';
int i;
void main() {
i = 10;
//1.创建一个消息接收器
ReceivePort port = new ReceivePort();
//2.创建isolate线程
Isolate.spawn(isolateMain, port.sendPort);
//3.用接收器receiveport接受其他isolate发来的消息
port.listen((message) {
//发过来的sendPort,则主isolate也可以向创建的isolate发送消息
if (message is SendPort) {
message.send("接受消息成功~");
} else {
print("接到子isolate消息:" + message);
}
});
}
//新的isolate
void isolateMain(SendPort port) {
//isolate是内存隔离的,i的值实在主isolate定义的,所以这里获取为null
print(i); //null
//1.创建一个消息接收器
ReceivePort receivePort = new ReceivePort();
port.send(receivePort.sendPort);
//2.向主isolate发送消息
port.send("我发送消息啦~~~");
//3.接受数据的方法
receivePort.listen((message) {
print("接收到的isloate消息:" + message);
});
}
##并行
import 'dart:isolate';
void main() {
Isolate.spawn(iso1, "");
Isolate.spawn(iso2, "");
while (true) {}
}
void iso1(msg) {
print("iso1 执行");
Future.doWhile(() {
print("1");
return true;
});
}
void iso2(msg) {
print("iso2 执行");
Future.doWhile(() {
print("2");
return true;
});
}