Назад к вопросам
Junior — Middle
95
Можно ли использовать многопоточность в Dart для параллельной обработки задач?
Компании, где спрашивали
Верме
Ответ от нейросети
sobes.tech AI
В Dart многопоточность реализована через механизм "Isolates" — отдельные изолированные потоки с собственной памятью. Они позволяют выполнять задачи параллельно, но не разделяют память напрямую, что предотвращает проблемы с синхронизацией.
Для параллельной обработки задач создаются новые Isolate, между которыми происходит обмен сообщениями.
Пример создания Isolate:
import 'dart:isolate';
void task(SendPort sendPort) {
// Некоторая тяжёлая задача
int result = 0;
for (int i = 0; i < 1000000; i++) {
result += i;
}
sendPort.send(result);
}
void main() async {
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(task, receivePort.sendPort);
receivePort.listen((message) {
print('Результат: $message');
receivePort.close();
});
}
Таким образом, в Dart можно использовать параллельную обработку с помощью Isolates, что эффективно для CPU-интенсивных задач.