2011-08-06 13 views
5

iframeを使用してマルチスレッドをシミュレートしようとしていますが、実際にiframeプロセス(スレッド)を単独で使用しているかどうかわかりません。iframeを使用したマルチスレッド

たとえば、iframeの内側にあるメソッドを呼び出すと、iframeによって作成されたスレッドを使用して実行されますか、メインの親ウィンドウスレッドを使用して実行されますか?

それは後者である場合、それはIFRAMEメソッドを呼び出すようにスコープを変更することが可能である(プログラムは、親ウィンドウとは異なるスレッドを使用するように)

EDIT: たぶんこれについてもっとはっきりしているはずですが、私はDOM要素にアクセスできないためWebWorkersを使いたくないのです。

答えて

4

バックグラウンドタスクを実行する場合は、WebWorkersを使用してください。

通常、マルチスレッドのjsコードは必要ありません。代わりにイベントループを使用する必要があります。

+0

私はイベントループについて同意します。スレッドは処理能力を追加しません。これは単にコードの実行を分割する手段に過ぎません。 Googleでは、スレッド処理でのイベント発生の可能性を理解するためにnode.jsをどのように使用していますか。 –

+0

@KevinHakansonはい私は同意します。しかし、スレッドの主な用途はバックグラウンドで長い計算を実行することです。長期間の計算にイベントループを使用することはできません。新しいプロセスでそれらを投げます。ブラウザでは、プロセスを作成してWebワーカーを使用することはできません。 – Raynos

+0

私のアプリケーションはちょうど計算より複雑です。私は親ウィンドウ内でSVG要素(スケール、翻訳、回転など)を扱う複数のスレッドを持つことができるようにしたい。 – fogy

1

MDNドキュメントからUsing web workersをご覧ください。

ワーカーインターフェースは、実際のOSレベルのスレッドを生成し、あなたが注意されていない場合、並行性が あなたのコード内で興味深い効果を引き起こす可能性があります。しかし、Webワーカーの場合は 、慎重に制御された通信 は他のスレッドとの点では、実際には非常に難しく、 の同時性の問題が発生しています。非スレッドセーフなコンポーネント またはDOMへのアクセスはなく、スレッド にシリアル化されたオブジェクトを使用して特定のデータを渡す必要があります。だからあなたのコードでは、 問題を引き起こすために本当に難しい作業をしなければならない。

John Resigは、このトピックについて2009年に戻るComputing with JavaScript Web Workersを書きました。しかし、When can I useによれば、IE10までIEサポートはありませんので、あなたのニーズに合わない可能性があります。

関連する問題