Краткая версия: нет, вы не можете получить доступ к XPCOM из другого потока. Но это не значит, что вы не можете использовать chrome worker.
Длинная версия: Firefox используется для разрешения доступа к XPCOM из других потоков, например через ChromeWorker
. Это приводило ко всевозможным проблемам, таким как странные сбои или просто несогласованное поведение. В конце концов, Mozilla решила, что поддержка многопоточного доступа XPCOM слишком сложна и подвержена ошибкам, так как документировала ее ограничения и не позволяла людям стрелять себе в ноги.
В текущих версиях Firefox доступ к XPCOM из ChromeWorker
больше невозможен. Сам ChromeWorker
, однако, не является устаревшим, хотя комментарий MDN может быть легко неверно истолкован как общее заявление об устаревании. Идея состоит в том, что вы должны использовать ChromeWorker
в сочетании с js-ctypes, что позволит вам использовать собственные библиотеки (те, которые предоставляются операционной системой, библиотеки, включенные в Firefox, такие как NSS, и библиотеки, распространяемые с вашим расширением) в другом потоке.
В зависимости от того, чего вы пытаетесь достичь, это может сработать для вас. Например, если вам нужен XPCOM для доступа к файлам, вам даже не нужно напрямую использовать js-ctypes - OS.File API сделает это за вас. Однако доступ XPCOM ограничен основным потоком.
person
Wladimir Palant
schedule
14.01.2014