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