나는이 예제를 시도하고 여전히 몇 가지 버그가있을 수 있도록 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에서 더 안정적입니다.
안녕하세요, 감사합니다. 나는 서버에서 다트를 사용한 적이 없다. Dartium에서 "spawnFunction은 dom 사용 가능 격리에서 지원되지 않습니다."라는 메시지가 나타납니다. 이것이 미래에 효과가 있는지 알고 있습니까? (spawnUri는 http://japhr.blogspot.nl/2013/11/new-fangled-dart-isolates.html과 같이 사용할 수 있지만 좀 더 복잡해 보입니다.) –
오,이 링크를 추가 할 계획 이었지만 분명히 잊어 버렸습니다. 어쨌든 당신이 그것을 발견했기 때문에 다행입니다. Chris '게시물에서 실제로'spawn()'이 사용 된 경우에도'spawnFunction()'is not supported'가 throw됩니다. 이 아키텍처에 대한 자세한 정보가 없습니다. 'BREAKING CHANGE' 게시물로 참조한 다트 그룹에 질문을 올리는 것이 좋습니다. –
@hendrik - 더 많은 예제를 보시려면 [예 - 다트 - 스폰서 - 인 - 라이브러리 - 다트 졸졸] (https://stackoverflow.com/questions/17299512/is-there-any-example- for-darts-spawnuri-in-library-dartisolate/25104337). 'Isolate.spawnUri'의 추가적인 오버 헤드는 1) 별도의 라이브러리에 코드를 넣는 것입니다. 2) 격리가 제대로 생성되었는지를 알려주는'Future'를 다루고 있습니다. 거기에서 모든 것이 동일합니다. –