|
Boost Users : |
From: Andrey Tcherepanov (moyt63c02_at_[hidden])
Date: 2008-01-08 15:39:59
Would be nice to have explanation like this sitting in the documentation
too... There is no such thing as too much documentation, right :) ?
On Tue, 08 Jan 2008 07:44:33 -0700, mikpol <mike.polyakov_at_[hidden]> wrote:
>
>
> mikpol wrote:
>>
>> I've been trying to understand the reasons to have asio_handler_invoke
>> function, and so far I am unable to understand why it is needed. It is
>> used to override invocation policy for a function-like object based on
>> the
>> handler. boost::asio gives one example with using io_service::strand...
>>
>
> I have finally understood the reason for asio_handler_invoke after
> reading
> asio TR2 proposal carefully. It is due to the bound handlers invoked by
> the
> library for functions such as async_read and async_read_until. They need
> to
> call read function on the socket multiple times, and a handler created by
> the library is needed to be called in the same way as the user provided
> handler. I knew about this before, but I couldn't understand what was
> shared
> between those handler's that needs to be protected from simultaneous
> invocation by multiple threads. It turns out this is the socket object
> itself, which is referenced from all these handlers and needs protection
> from potential concurrent invocation.
>
> If anyone finds a problem in this explanation or would like to comment on
> other reasons why it is needed, please post something, I would be
> interested
> in hearing your opinion.
>
> Thanks.
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net