单向通信
import 'dart:isolate';
main(List<String> args) async {
print('main start');
ReceivePort response = ReceivePort();
Isolate isolate = await Isolate.spawn<SendPort>(fun, response.sendPort);
response.listen((message) {
print('Isolate 返回: $message');
response.close();
isolate.kill();
});
print('main end');
}
void fun(SendPort send) async {
send.send('isolate返回消息');
}
双向通信
import 'dart:isolate'
main(List<String> args) async {
//1.创建管道
ReceivePort response = ReceivePort()
//2.创建Isolate
Isolate isolate = await Isolate.spawn<SendPort>(fun, response.sendPort)
SendPort newIsolateSendPort = await response.first as SendPort
ReceivePort request = ReceivePort()
newIsolateSendPort.send(["This is a request message!", request.sendPort])
String responseMessage = await request.first
print('kafka response message: $responseMessage')
}
void fun(SendPort send) async {
ReceivePort newIsolateReceivePort = ReceivePort()
send.send(newIsolateReceivePort.sendPort)
final message = await newIsolateReceivePort.first as List
final data = message[0] as String
final request = message[1] as SendPort
request.send('This is a response message!')
print('kafka request message: $data')
}