Я пишу расширение Firefox с помощью Add-on-builder и Add-on SDK. До сих пор мне удалось обойти любые ограничения, не переходя на XUL. Но я столкнулся с препятствием.Параллелизм и многопоточность в расширениях Firefox
У меня есть длительный процесс, который может блокироваться, поэтому мне нужно отделить эту обработку от основного потока пользовательского интерфейса. Я прочитал вопрос here, но он не совсем отвечает на мой вопрос. Работникам Web недостаточно, поскольку для долгого процесса требуется доступ к js-ctypes и собственному коду. Таким образом, казалось бы, ChromeWorker может сделать трюк. Но я не знаю, как получить доступ к нему из Add-on-builder. Кроме того, диспетчер потоков доступен только через код C++. Как я могу либо:
- доступа и экземпляр Chrome Рабочие (или)
- Создать темы (или)
- Поддельный параллелизм (как-то)
, чтобы избежать блокирования потока пользовательского интерфейса. В качестве альтернативы, я мог бы свернуть свой собственный код (который я пытаюсь избежать).
Спасибо. Как создать модуль JavaScript с помощью Addon builder? Возможно ли создать его как часть расширения? Или мне нужно создать публичную библиотеку для экспорта ChromeWorker? Еще раз спасибо! – plin
@plin: см. Мой пример кода ... Вам не нужно создавать модуль, их уже достаточно. Вам нужны только их, чтобы получить конструктор 'ChromeWorker', после чего вы можете просто использовать его. –
Я попытался создать библиотеку и экспортировать ChromeWorker. Я смог получить к нему доступ, но хотя создание нового ChromeWorker создало рабочего, я не мог отправлять или получать сообщения между моим основным сценарием и рабочим сценарием. – plin