Back to questions
Junior — Middle
148
Каким образом можно реализовать параллельное выполнение двух потоков в языке Dart?
Answer from AI
sobes.tech AI
В Dart для параллельного выполнения кода используются изоляторы (Isolates), так как стандартные потоки не разделяют память и не могут работать параллельно в одном процессе.
Чтобы запустить два параллельных потока, нужно создать два изолятора. Каждый изолятор работает в своем собственном пространстве памяти и общается с другими через сообщения.
Пример создания и запуска двух изоляторов:
import 'dart:isolate';
void isolateEntry(SendPort sendPort) {
// Некоторая работа в изоляторе
sendPort.send('Изолятор завершил работу');
}
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('Сообщение из первого изолятора: $message');
});
receivePort2.listen((message) {
print('Сообщение из второго изолятора: $message');
});
}
Таким образом, для параллелизма в Dart нужно использовать изоляторы, а не обычные потоки.