Page History
...
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
퓨쳐는 읽기전용이며, 퓨쳐에 담긴 값을 외부에서 변경할수 없습니다. 함수 실행이 끝나면
퓨쳐에 성공 또는 실패에 따른 결과가 들어갑니다. 퓨쳐에 담긴 결과는 완료된 다음부터는
바뀌지 않으며, 외부에서 여러번 읽을수 있고 매번 같은 값을 돌려줍니다.
결과가 들어갈 용기가 있으므로 비동기적으로 실행되는 여러 함수들을 쉽게 조합할수가 있습니다.
Info |
---|
퓨쳐는 여러함수의 결과가 다음 함수의 입력이되어야할시, 여러 함수가 병렬로 연결되며 나중에 여러 함수의 결과를 조합해야하는 파이프라이닝(pipelining)에 좋은 도구입니다. |
.net 에서 Actor 메시지와
...
Future(Task)를 연동한 샘픞
Code Block | ||||
---|---|---|---|---|
| ||||
public class ReActor : ReceiveActor { private ILoggingAdapter log = Context.GetLogger(); public ReActor() { string myPath = Self.Path.ToString(); Receive<string>(message => { Handle(message); }); Receive<DelayReply>(message => { Handle(message); }); } public void Handle(string str) //InMessage { Task.Run(async () => { await Task.Delay(1000); //어떠한 값을 기다림 DelayReply reply = new DelayReply(); reply.message = str; return reply; }).PipeTo(Self); } public void Handle(DelayReply data) //Out { string logtrace = string.Format("I'am {0} RE:{1}", Self.Path, data.message); log.Info(data.message); Sender.Tell(data); } } |
...