Модель потоков NPAPI: должен ли доступ к глобальным переменным быть защищен блокировкой? - PullRequest
0 голосов
/ 03 августа 2011

С https://developer.mozilla.org/En/Gecko_Plugin_API_Reference:Scripting_plugins:

Этот API не предназначен для обеспечения безопасности потоков. Модель потоков для этого API такова, что все вызовы через этот API являются синхронными, и вызовы из плагина к методам в этом API должны исходить из потока, в котором был запущен плагин, а также все вызовы методов в этом API из браузера гарантированно приходят из той же темы. В будущих версиях этого API может быть предусмотрен механизм для передачи вызовов из одного потока в другой, что поможет использовать этот API из других потоков.

Если я хочу получить доступ к глобальной переменной в моем плагине (общей для всех экземпляров, даже на разных страницах), нужно ли ее блокировать или браузер использует только один поток для связи с плагином для всех экземпляров?

1 Ответ

1 голос
/ 04 августа 2011

Браузер всегда использует ровно один поток для связи с плагином для всех экземпляров;вы должны сделать то же самое в ответ и никогда не вызывать никакие функции NPN_, кроме основного потока.

Имейте в виду, что если вы делаете что-либо, что может блокировать основной поток вообще вы захотите создать свои собственные потоки, и в этом случае вам может потребоваться блокировка;однако только для браузера?нет, они вам не нужны.

...