Creating a future/promise object

Sebastiaan Koppe via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 8 06:37:08 PDT 2015


On Tuesday, 7 July 2015 at 16:41:41 UTC, Frank Pagliughi wrote:
>> Instead of pulling values out, have you considered pushing 
>> them? E.g. by supplying a delegate that gets called when the 
>> asynchronous action completed.
>
> I've always been on the fence about push vs pull when writing 
> libraries of this type. The callback/delegate method is 
> probably more powerful and may reduce latency and context 
> switching, but since the callback happens in the context of the 
> library thread, it exposes the client application to the 
> messiness and problems of managing threads, race conditions, 
> locking and all that. And it can expose the library to 
> performance issues by handing over it's thread to user code 
> which may not return for a long, long time. Plus most of the 
> time I've found that client apps just set a flag and signal a 
> condition variable anyway.

The delegate could send a message to user code in another 
thread/fiber. In any case it removes a blocking get_result() and 
possibly the need for get_result_timeout().


More information about the Digitalmars-d mailing list