Fiber based UI-Toolkit

Jacob Carlborg via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jul 10 23:35:12 PDT 2017


On 2017-07-11 04:40, Gerald wrote:

> Thanks for the link, I'm not active with .Net so I had to go look it up. 
> Reminds me a lot of the way node.js works. If all your async activity is 
> IO bound maybe it works fine and I'm wrong about this.
> 
> 
> My past experience has been that it's challenging to determine the 
> appropriate times to yield particularly with a lot of async activity 
> happening. However with it baked into the framework and a simplified API 
> maybe it becomes less of an issue.
> 
> I'll have to do more reading on it, again thanks for the pointer.

I'm not that familiar with .Net either but this async/await feature is 
spreading across languages: C++, JavaScript, .Net, Dart and possibly others.

As far as I understand it consists of two parts: coroutines (resumable 
functions) and asynchronous operations, usually IO. Any async function 
returns some form of future type. If you call that function, it will 
return immediately and let the execution continue. Now it's possible to 
do work that is independent of the result of the previous call. When you 
do need the result of the first call, you call "await" on the return 
value of that call, the future. If the result is ready, everything is 
fine and the execution continues. If the result is not ready, your 
function will suspend and the caller will continue the execution.

You don't need to do any explicit yielding due to the language and 
framework support. The only thing you need to determine is when you need 
the result of an aysnc function call.

-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list