2011-08-06 4 views
5

iframe을 사용하여 멀티 스레딩을 시뮬레이트하려고하지만 실제로 iframe 프로세스 (스레드)를 자체적으로 사용하는지 잘 모르겠다.iframe을 사용하는 멀티 스레딩

예를 들어, iframe 내부에있는 메서드를 호출하면 iframe에서 만든 스레드를 사용하여 실행합니까, 아니면 기본 부모 창 스레드를 사용하여 실행합니까?

는 후자 인 경우,이

EDIT (프로그램이 부모 윈도우의에서 다른 스레드를 사용하도록) iframe이 메소드를 호출 할 수 있도록 범위를 변경할 수 있습니다 : 어쩌면 내가 이 점에 대해 더 분명해야하지만 DOM 요소에 대한 액세스 권한이 없기 때문에 WebWorkers를 사용하고 싶지 않습니다.

답변

4

배경 작업을 실행하려면 WebWorkers을 사용하십시오.

일반적으로 멀티 스레드 js 코드는 필요하지 않습니다. 대신 이벤트 루프를 사용해야합니다.

+0

이벤트 루프에 동의합니다. 스레드는 처리 능력을 추가하지 않으며 단지 코드 실행을 분할하는 수단 일뿐입니다. Google은 threading에 대한 이벤트 발생의 힘을 이해하기 위해 node.js를 사용하고 있습니다. –

+0

@KevinHakanson 예 동의합니다. 그러나 스레드의 주요 용도는 백그라운드에서 긴 계산을 실행하는 것입니다. 장기 실행 계산에는 이벤트 루프를 사용할 수 없으므로 새 프로세스에 이벤트 루프를 던질 수 있습니다. 브라우저에서 우리는 프로세스를 생성 할 수 없으므로 웹 작업자를 사용합니다. – Raynos

+0

내 응용 프로그램은 계산식보다 약간 복잡합니다. 부모 창 내에서 SVG 요소 (크기 조정, 변환, 회전 등)를 처리하는 여러 스레드를 가질 수 있기를 원합니다. – fogy

1

MDN 문서에서 Using web workers을 살펴보십시오.

작업자 인터페이스는 실제 OS 레벨 스레드를 생성합니다, 그리고 동시성 당신은주의 코드에 원인 재미있는 효과없는 할 수 있습니다. 그러나 웹 근로자의 경우 의 경우 신중하게 제어 된 통신 은 다른 스레드와의 연결을 의미하므로 실제로는 매우 어려워서 동시성 문제가 발생합니다. 비 스레드 안전 구성 요소 또는 DOM에 액세스 할 수 없으므로 스레드 에 직렬화 된 객체를 통해 특정 데이터를 전달해야합니다. 따라서 코드에서 문제가 발생하도록 열심히 노력해야합니다.

John Resig는이 주제에 대해 2009 년에 Computing with JavaScript Web Workers n을 작성했습니다. 그러나 When can I use에 따르면 IE10까지 IE 지원이 없으므로 사용자의 요구에 맞지 않을 수 있습니다.