두 개의 비동기 값 (비동기 < _>)에 의해 처음 반환 된 값을 가져 오는 비동기 연산자가 있습니까?첫 번째 비동기 결과 선택
예를 들어, 주어진 두 개의 Async < _> 값 중 하나가 1 초 후에 반환되고 A2가 2 초 후에 반환되는 경우 A1의 결과를 원합니다.
이유는 내가 비동기 시퀀스 인터리브 기능을 구현하려는 것입니다 그래서 (대리석 다이어그램과 같이 시간을 나타내는 공간)과 같이 "정의"이 비동기 순서가있는 경우 : 다음
S1 = -+-----+------------+----+
S2 = ---+-------+----------+-----+
은 나는이 같은 역할을 새로운 비동기 시퀀스를 생성 할 :
S3 = -+-+---+---+--------+-+--+--+
인터리브가 S1 S2는 = S3
그러나이 그렇게를, I 선택 값을 선택하려면 일종의 비동기 선택 연산자가 필요할 것입니다.
나는 두 채널에서 첫 번째 값을 가져올 수있는 Go에서 "선택"과 같을 것이라고 생각합니다.
TPL에는 Task.WhenAny라는 기능이 있습니다. 여기서는 비슷한 기능이 필요할 것입니다.
실제로 비동기식 선택에서 비동기식 인터리브를 구현할 수 있는지 잘 모르겠다. (설명 된대로 선택하면 A1과 A2를 실행하고 A2를 버려야한다.비동기 시퀀스의 유형은 무엇입니까? –
소비자를 [MailboxProcessor] (http://msdn.microsoft.com/en-us/library/ee370357.aspx)로 구현하고 S1과 S2 모두에 메시지를 게시 할 수 있습니까? MailboxProcessor는 S3 순서로 메시지를 가져옵니다. –
유형은 http://tomasp.net/blog/async-sequences.aspx/에서 정의됩니다. 당신은 맞습니다. 나는 다른 계산을 버리고 싶지 않습니다. 단지 완성 된 순서대로 결과를 사용하고 싶습니다. –