Junior — Middle
Kaip įgyvendinti dviejų srautų lygiagrečią vykdymą Dart kalboje?
sobes.tech AI
Atsakymas iš AI
Dart kalboje kodų paraleliniam vykdymui naudojami izoliatoriai (Isolates), nes standartiniai srautai nesidalina atmintimi ir negali veikti paraleliai viename procese.
Norint paleisti du paralelinius srautus, reikia sukurti du izoliatorius. Kiekvienas izoliatorius veikia savo atminties erdvėje ir bendrauja su kitais per žinutes.
Pavyzdys, kaip sukurti ir paleisti du izoliatorius:
import 'dart:isolate';
void isolateEntry(SendPort sendPort) {
// Darbas izoliatoriuje
sendPort.send('Izoliatorius baigė darbą');
}
void main() async {
ReceivePort receivePort1 = ReceivePort();
ReceivePort receivePort2 = ReceivePort();
await Isolate.spawn(isolateEntry, receivePort1.sendPort);
await Isolate.spawn(isolateEntry, receivePort2.sendPort);
receivePort1.listen((message) {
print('Primo izoliatoria žinutė: $message');
});
receivePort2.listen((message) {
print('Antras izoliatorius: $message');
});
}
Todėl, norint pasiekti paralelizmą Dart kalboje, reikia naudoti izoliatorius, o ne įprastus srautus.