how can await 2 or more things (with different types) @ same time? in event loop:
while(true) { letter msg1 = await waitforletter(); //read msg1 , reply. sms msg2 = await waitforsms(); //read msg2 , reply } that doesn't right. 2 messages end blocking each other?
currently, code wait each method finish in turn. if want send out each message wait both @ end, can use task.waitall method (assuming methods return task<t> object.
while(true) { task<letter> msgtask1 = waitforletter(); task<sms> msgtask2 = waitforsms(); task.waitall(msgtask1, msgtask2); } you can result of each task result property (again assuming method return task<t>:
letter msg1 = msgtask1.result; sms msg2 = msgtask2.result; of course, assumes implementation of waitforletter , waitforsms independent , don't block each other.
if want wait any of tasks finish, can use `task.waitany' same end. returns index of task finished know 1 complete.
while(true) { task<letter> msgtask1 = waitforletter(); task<sms> msgtask2 = waitforsms(); var finishedtask = task.waitany(msgtask1, msgtask2); }
Comments
Post a Comment