On 17 Feb 2015 at 10:41, Fu ji wrote:
But I see that I started really interesting conversation. It is really hard to port all funtionality of WFMO because you can put as parameters:
Change notification, Console input, Event, Memory resource notification, Mutex, Process, Semaphore, Thread, Waitable timer.
So we can create unified API but that kind of flexibility always provide performance penalty. I am not sure if something equivalent in Unix can be implemented on low level.
BSD and OS X implements that via kqueues. Linux is actually the odd man out here, epoll just isn't as useful. I believe Boost.Thread v5 intends to implement a unified wait composure mechanism atop the C++ 11 STL which could also be hooked by a Fiber implementation. Indeed, proposed Boost.Fiber I assume does already implement a unified wait composure system for Fiber wait objects. The real bear in all these unified wait composure systems is merging i/o waits into the same unified wait composure system. ASIO can be persuaded via async_result, AFIO will get support in v1.4, but in the end most C++ is still using iostreams etc. That means if you block on i/o, your Fibers and composed waits all block too for that thread until the i/o returns. Probably that means someone would have to reimplement iostreams using an async engine under the bonnet. Good luck finding commercial funding for that. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/