
Hi Felipe, --- Felipe Magno de Almeida <felipe.m.almeida@gmail.com> wrote:
I think it would be interesting to have some kind of "QoS". A way to give different priorities to handles/operations. I think it would be possible through more than one impl_reactor.
I presume you mean like in realtime systems, perhaps with an API using concepts similar to RTCORBA? I had thought before that something like this might be accomplished through having multiple demuxers where each is assigned a priority and each has its own pool of threads, e.g. rt_demuxer d1(high_priority); rt_demuxer d2(low_priority); rt_stream_socket s1(d1); // high priority socket rt_stream_socket s2(d2); // low priority socket ... thread th1(bind(&rt_demuxer::run, &d1)); thread th2(bind(&rt_demuxer::run, &d2)); Or another approach having a single parent demuxer, with multiple child demuxers, each assigned different priorities, but they all share the parent demuxer's pool of threads (I believe this is more like what RTCORBA does): rt_demuxer d; rt_child_demuxer d1(d, high_priority); rt_child_demuxer d2(d, low_priority); rt_stream_socket s1(d1); // high priority socket rt_stream_socket s2(d2); // low priority socket ... thread th1(bind(&rt_demuxer::run, &d)); thread th2(bind(&rt_demuxer::run, &d)); However I am definitely *not* an expert in anything realtime, so this is just a very rough idea of how I think it might be accomplished. Cheers, Chris