FireFox 拡張用に C++ で XPCOM オブジェクトを作成しました。イベントをリッスンするためにワーカー スレッドを使用しています。イベントが発生した場合は、メイン スレッドで処理を行う必要があります。明らかに、ブラウザを使用できるようにする必要があるため、メイン スレッドで JavaScript をただ座って待つことはできません (私のイベントはめったに発生しません)。
私はスレッドでこれをやろうとしました(xpcomの男はjavascriptにイベントを送信します):
window.setTimeout( myImportantWorkFunction, 100 );
これは(意図したようにメインスレッドで)機能しますが、無期限に一時停止します。意図したように100ミリ秒後に発生しません。少しクリックするか、ウィンドウのサイズを変更する必要があり、突然関数が呼び出されます。JavaScriptが突然目覚めたように。これは、スレッドで発生しているためだと思います。
ワーカーがメインスレッドに何かを依頼するためのより良い方法はありますか?