2009-02-04 5 views
0

GWT/Gears에서 WorkerPool (Javascript Threads) 클래스와 기능을 사용하려면 Java 및 Javascript로 코드를 작성해야합니까? WorkerPool - Getting Started과 GWT-Gears-1.1 다운로드 패키지의 샘플 WorkerPool 응용 프로그램을 검사하면 꼭 필요한 것 같습니다. Java 코드는 Javascript의 동기 성을 증명하는 데 사용되고 Javascript의 동일한 알고리즘이 비동기 호출에 사용되는 것 같습니다.GWT에서 Gears WorkerPool을 사용하려면 Java와 Javascript에서 동일한 코드를 작성해야합니까?

내가 누락 된 항목이 있습니까? 자바 스크립트 코드를 작성할 필요가 없도록 GWT가 생성되지 않았습니까? WorkerThread 코드를 Java로 작성하고 컴파일러에서 Javascript로 컴파일 할 수없는 이유는 무엇입니까?

function doWork(message) { 
// Busy wait for 5 seconds 
var start = new Date(); 
while (true) { 
    var busyCounter = 10000; 
    var busyVar; 
    while (busyCounter-- > 0) { 
    busyVar = "garbage" + busyCounter; 
    } 
    var now = new Date(); 
    if (now.getTime() - start.getTime() > 5000) { 
    break; 
    } 
} 

return "Approved: " + message; 
}; 
: 여기
public void syncWorker(String message) { 
// Busy wait for 5 seconds 
long end = System.currentTimeMillis() + 5000; 
while (true) { 
    int busyCounter = 1000; 
    String busyVar; 
    while (busyCounter-- > 0) { 
    busyVar = "garbage" + busyCounter; 
    } 
    long now = System.currentTimeMillis(); 
    if (now > end) { 
    break; 
    } 
} 
logMessage("Approved: " + message); 
} 

가 worker.js의 관련 자바 스크립트 코드 (이 자바 스크립트로 작성된 동일한 알고리즘이 얼마나주의 사항)입니다 : 여기

해당 URL에서 관련 자바 코드 여기

자바에서 호출입니다 :

wp = Factory.getInstance().createWorkerPool(); 
wp.setMessageHandler(GearsWorkerPoolTutorial.this); 
workerId = wp.createWorkerFromUrl("worker.js"); 

수 GWT와 기어 경험이있는 사람 이걸 좀 털어 놓으 셨나요?

감사합니다.

편집 :

그것은 나의 의심에 해당하는 경우이 http://markmail.org/message/gxipzth2jheccpha#query:+page:1+mid:sabv4llpymbavt7t+state:results에 따라 보인다. 이 제한이 존재하는 이유를 잘 모르겠다. 나는이 문제에 대한 통찰력을 읽고 싶다.

편집 2 : http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/658f6665e5b09bed

답변

1

내가 GWT에 대한 기어를 사용한 적이 있지만 증거를 읽은 후, 난 당신이 WorkerPool 클래스를 실행할 수 없다는에서 올바른 생각 :

이 또한 그것을 확인하는 것 자바 스크립트 파일 만 지원하며 자바 컴파일 - 자바 스크립트는 지원하지 않습니다. 다음은 GWT-Gears v1.1.1 WorkerPool API의 견적입니다.

WorkerPool 모듈은 메인 페이지의 스크립트 실행을 차단하지 않고, 배경 에 자바 스크립트 코드를 실행하는 웹에게 응용 프로그램을 할 수 있습니다. 현재이 클래스는 작업자 스레드를 원시 자바 스크립트 코드에서만 만들 수 있습니다. 즉, 사용자 코드는 현재 Java 코드의 작업자 본문을 만들 수 없습니다.

WorkerPool 클래스는 작은 작업이 아닌 스레드와 통신을 관리합니다.