|
Boost : |
From: Iain Hanson (Iain.Hanson_at_[hidden])
Date: 2005-04-14 05:08:14
On Wed, 2005-04-13 at 20:14 -0700, Don G wrote:
> I think this presupposes a mostly manual association of
> selectable_object with select_set? The select_set is then used to
> wait?
Yes.
> If not, please explain the importance of "when can non-blocking
> operations proceed" vs. "async operations are done". If the
> "operation is done" callback occurs by calling dequeuing a
> boost::function<> then the app is still "single threaded" to the
> user.
Not all platforms have threads. There may even be some that don't supply
co-operative multi-tasking.
Non-blocking calls are akin to polling. A non-blocking read fails if
there is no data to read. A non-blocking write fails if there is
insufficient space in the queue. If a non-block write succeeds then
its behaviour is identical to a blocking write.
An async write queues the request and success or failure is reported
sometime later.
BTW callbacks are just *one* way that async completion can be reported.
/ikh
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk