2014-01-07 2 views
5

나는 최근에 다트 (www.dartlang.org)로 시작하여 지금까지 정말 좋아합니다. 매우 유망한 기능은 분리이지만, 시작하는 방법에 대해서는 잘 모릅니다.다트 격리에 관한 최근 문서

지금까지 발견 한 문서는 2013 년 10 월의 변경 전 (BREAKING CHANGE: dart:isolate)입니다.이 "변경 사항 변경"이메일의 정보는 매우 복잡하며 새로운 API는 이전 버전보다 복잡해 보입니다.

  • 는 다트는 다음과 같습니다 : API를 안정적으로 분리

    나는 몇 가지 질문 있어요?

  • 최신 문서가 있습니까?
  • 실용 예제가 있습니까? 어떤 도움

감사합니다, 헨드릭 월

답변

3

나는이 예제를 시도하고 여전히 몇 가지 버그가있을 수 있도록 https://gist.github.com/olostan/7883315

import "dart:isolate"; 

void main() { 
    print("Starting"); 
    var sPort = new ReceivePort(); 
    SendPort rPort; 
    sPort.listen((msg) { 
    if (msg is SendPort) { 
     print("Host got port. sending back"); 
     rPort = msg; 
     rPort.send("Hello!"); 
    } 
    else print("Host got $msg"); 
    rPort.send(null); 
    sPort.close(); 
    }); 
    Isolate.spawn(test,sPort.sendPort); 
} 
void test(sender) { 
    var rPort = new ReceivePort(); 
    sender.send(rPort.sendPort); 
    rPort.listen((msg){ 
    print("Worker got $msg"); 
    if (msg!=null) 
     sender.send("I am worker"); 
    else rPort.close(); 
    }); 
} 

분리 된 균주 너무 많은 아직 사용하지 않을 것 같다 작동합니다.
내가 읽은 최신 문제는 격리 된 코드를 디버깅하는 것이 었습니다. 이것이 아직 해결되었는지 나는 모른다.
또한 서버 또는 브라우저에서 격리를 사용할지 여부에 따라 다릅니다.
AFAIK VM에서 더 안정적입니다.

+0

안녕하세요, 감사합니다. 나는 서버에서 다트를 사용한 적이 없다. Dartium에서 "spawnFunction은 dom 사용 가능 격리에서 지원되지 않습니다."라는 메시지가 나타납니다. 이것이 미래에 효과가 있는지 알고 있습니까? (spawnUri는 http://japhr.blogspot.nl/2013/11/new-fangled-dart-isolates.html과 같이 사용할 수 있지만 좀 더 복잡해 보입니다.) –

+0

오,이 링크를 추가 할 계획 이었지만 분명히 잊어 버렸습니다. 어쨌든 당신이 그것을 발견했기 때문에 다행입니다. Chris '게시물에서 실제로'spawn()'이 사용 된 경우에도'spawnFunction()'is not supported'가 throw됩니다. 이 아키텍처에 대한 자세한 정보가 없습니다. 'BREAKING CHANGE' 게시물로 참조한 다트 그룹에 질문을 올리는 것이 좋습니다. –

+2

@hendrik - 더 많은 예제를 보시려면 [예 - 다트 - 스폰서 - 인 - 라이브러리 - 다트 졸졸] (https://stackoverflow.com/questions/17299512/is-there-any-example- for-darts-spawnuri-in-library-dartisolate/25104337). 'Isolate.spawnUri'의 추가적인 오버 헤드는 1) 별도의 라이브러리에 코드를 넣는 것입니다. 2) 격리가 제대로 생성되었는지를 알려주는'Future'를 다루고 있습니다. 거기에서 모든 것이 동일합니다. –