
Don G wrote:
I think we should start by asking a different question: can we write a portable asynchronous delivery mechanism? Answer: yes. We would have to define what is a "message" (my choice is a function<void ()> object), how is it queued and how is the queue drained. There are other picky details, but that's the start.
Following a discussion started by Aaron W. LaFramboise about extensibility I'd like to suggest not to start with the highest level of abstraction, or at least to start from both ends. I think for many programmers it would be highly desirable to have a robust C++ API to deal with the various system APIs, even if they are not fully portable. Once a set of such platform-specific modules exist, the high level API you are referring to could be made to choose at compile-time (traits ?) to which low level library it maps. Thus, once I know the platform I'm coding for (i.e. the level of abstraction I need) I may or may not plug right into the underlaying low-level API to get access to the rich features each platform-independent API has to trade against portability. Regards, Stefan