В моем плагине я создаю поток (используя pthread в моем случае) для прослушивания внешнего события. Когда происходит событие, я хочу вернуться к JavaScript. Насколько я понимаю, я могу назвать метод NPN_ * в потоке плагина. В результате мне нужно будет использовать NPN_PluginThreadAsyncCall в моем потоке, чтобы вызвать другой метод NPN_ * для связи с JavaScript. Таким образом, простой поток равенПоследовательный вызов NPN_PluginThreadAsyncCall
Проблема, с которой я столкнулся сейчас, заключается в том, что если внешнее происходит последовательно, например, 2 события с различным вводом данных, я получаю те же данные дважды в обратном вызове иногда (в половине случаев возвращаются два разных данных). Я думаю, это связано с тем, что NPN_PluginThreadAsyncCall - это асинхронный вызов, когда два последовательных события обращаются назад, NPN_PluginThreadAsyncCall вызывается дважды, данные переопределяются вторым вызовом уже до того, как обратный вызов JavaScript для первого события на самом деле происходит.
Первоначально данные события, которые я хочу вернуть, являются глобальной переменной. Но я также попытался изменить его на локальную переменную, она, похоже, не помогла. Есть ли другой способ, которым я могу сделать свой код последовательным вызовом, чтобы поговорить с JavaScript?
Я провел некоторое исследование и нашел это, How to callback plugin thread on Safari 5.1 on OSX?. Но я все еще не совсем понимаю (я работаю над Windows).
* «Итак, простой поток» * ... кажется, что какой-то текст/код отсутствует? –