|
|
|
|
|
by ajd
5364 days ago
|
|
>>> a multithreaded environment eventually ends up introducing several blocking I/O functions >> really? > yes ok. > Can you describe the other options you want to try? http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/exa.... See HTTP Server 1 to 4. my issue with node is independent of the programming language. i came here neither to bury ted nor
to praise him. i don't care what he has written now. i found his original article funny and thought
that it had some truth in it. all the other "logical deductions" you're making, require axioms that
you have and i don't. i don't know this ryan guy either but if he's made a system so many people
(including yourself, who i admire sincerely) think so strongly about, he must be an all around great
guy. good for him. as for me and this discussion, if node=asio and threads=avoid in your world, so be it, i'm ok with
that :) > one nodejs process has replaced their two dozen Ruby processes and is serving out twice as many
> requests from the same box and they are impressed that says a lot about Ruby (with which i have absolutely no experience) |
|
The C++ solution you posted is probably a hybrid solution as you described, but it has its own set of restrictions. The environment does not guarantee run time safety, functional programming support is poor and coroutine support is non-existent or weak(I noticed there is an unfinished Boost.coroutine library that must heavily depend on #include <functional>). While node shuts out threads it enables other solutions more suitable for a heavily I/O bound server. I only want to draw attention to the fact that almost all solutions available today involve some kind of compromise and hybrid solutions are possible in almost all of them.
As for the "deductions", I thought that they were obvious. You need threads rather than processes, so that you can share memory and avoid the serialization/deserialization complexity when communicating between threads. Or less often, you need a more elaborate synchronization mechanism such as reader/writer locks. As for asio extracting maximum performance, I think I will be better off writing a blog post about it.