Я знаю, что интенсивная работа процессора в основном процессе заблокирует процесс пользовательского интерфейса. У меня есть другой вопрос, блокирует ли пользовательский интерфейс длительное время операции ввода-вывода в основном процессе.
В последнее время я использую электрон для разработки настольного приложения для управления файлами.
Шаг 1:
Мой процесс пользовательского интерфейса использует асинхронный IPC (предоставленный Electron), чтобы сообщить главному процессу о получении данных списка файлов из сети (только выборочные метаданные файла, но не содержат содержимое файла)
Шаг 2:
Основной процесс извлекает данные из списка файлов из сети, а затем сохраняет список файлов в sqlite (я использую TypeORM), а затем выбираю части списка файлов из sqlite и отправляю их обратно в UI-процесс
Иногда step2 стоит десятки секунд (например, я получаю 10000 элементов данных файла из сети), и мой пользовательский интерфейс замедляется.
Итак, у меня два вопроса:
+ Длительное время ввода-вывода в основном процессе блокирует пользовательский интерфейс?
+ Каков наилучший способ выполнения операций ввода-вывода (база данных или локальный файл) в электронном приложении?