Да, у нас была такая же проблема с Safari 5.1 в FireBreath (на которую вы обязательно должны обратить внимание, если вы не знакомы с ней);NPN_PluginThreadAsyncCall больше не работает.Вы не указали, на какой платформе вы работаете, поэтому я покажу вам, что мы используем как на Mac, так и на Windows.
В Windows мы создаем сообщение HWND и отправляем сообщение на этот HWND, передаваяпустота * в данных события как LPARAM;void * преобразуется обратно в указатель на структуру данных, содержащую те параметры, которые обычно принимает pluginthreadasynccall, выполняется вызов и структура данных освобождается.Класс окна сообщения , который мы используем, находится здесь , а здесь, где осуществляется вызов .(Обратите внимание, что мы используем тот же механизм для вызовов между потоками в IE)
На Mac мы в основном просто используем target-c executeSelectorOnMainThread;мы обернули его в класс, чтобы его было легче использовать из c ++.Класс планировщика , который мы используем, находится здесь , а здесь, где выполняется вызов .Обратите внимание, что вам нужно быть очень осторожным, потому что с ними существует множество возможных условий гонки, и иногда вы в конечном итоге получаете повторно вводимый код.У FireBreath есть десятки часов работы, отводимой на совершенствование многопоточных вызовов;это обманчиво хитрая проблема.
Надеюсь, это поможет!