Dart是单线程的,如果是IO密集任务(如读写文件,网络收发数据)等,Dart提供了await
、async
、Future
等协程解决办法。
但是对于CPU密集型任务呢?Dart提供了isolate(隔离区)接口,与多进程
类似,不共享内存(内存隔离),建议看成网络通信模型或者进程通信模型更容易理解。
依赖
import 'dart:isolate';
示例
关键API SendPort
,ReceivePort
,Isolate
,下面示例是C/S模型
//请求的目的端口
static SendPort server_TargetPort = null;
//客户端发起连接,拿到服务端的消息接收端口
void Connect() async
{
ReceivePort client_receivePort = ReceivePort();
//client_receivePort.sendPort 是指client_receivePort用于接收消息的端口
await Isolate.spawn(Server_onReceivedMsg, [client_receivePort.sendPort,"