From 87632aac323bd41701900a03dc78bc307fa8229a Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 9 May 2011 02:13:51 +0000 Subject: doc: update comparison and README Clearly users need to know about more options --- Documentation/comparison.haml | 67 +++++++++++++++++++++++++++---------------- README | 12 +++++--- 2 files changed, 51 insertions(+), 28 deletions(-) diff --git a/Documentation/comparison.haml b/Documentation/comparison.haml index 3289088..716ecc0 100644 --- a/Documentation/comparison.haml +++ b/Documentation/comparison.haml @@ -132,6 +132,20 @@ %td.r19 Yes %td.rbx Yes %td.slow Yes + %tr.comp_row + %td.mod XEpollThreadSpawn + %td.tee Yes + %td.r18 Yes + %td.r19 Yes + %td.rbx Yes + %td.slow Yes + %tr.comp_row + %td.mod XEpollThreadPool + %td.tee Yes + %td.r18 Yes + %td.r19 Yes + %td.rbx Yes + %td.slow Yes %ul %li Cool.io should also work with Rubinius (though we haven't had time to test). @@ -256,6 +270,16 @@ %td.slowio No %td.thr No %td.reent No + %tr.comp_base + %td.mod XEpollThreadSpawn + %td.slowio thread-safe Ruby + %td.thr Yes + %td.reent No + %tr.comp_base + %td.mod XEpollThreadPool + %td.slowio thread-safe Ruby + %td.thr Yes + %td.reent No %ul %li Requirements for single thread reentrancy are loose in that there is @@ -288,91 +312,78 @@ %th.lock %a(href="http://rack.rubyforge.org/doc/Rack/Lock.html") Rack::Lock %th.async async - %th.ws Web Sockets %tr.comp_row %td.mod Unicorn/Base %td.devfd no-op %td.app_pool no-op %td.lock no-op %td.async lots of RAM :P - %td.ws no %tr.comp_row %td.mod Revactor %td.devfd no-op %td.app_pool Yes %td.lock No! %td.async Revactor itself - %td.ws no %tr.comp_row %td.mod ThreadPool %td.devfd Yes %td.app_pool Yes %td.lock Yes - %td.async standard Ruby - %td.ws no + %td.async thread-safe Ruby %tr.comp_row %td.mod Coolio %td.devfd Yes %td.app_pool no-op %td.lock no-op %td.async DevFdResponse - %td.ws no %tr.comp_row %td.mod ThreadSpawn %td.devfd Yes %td.app_pool Yes %td.lock Yes - %td.async standard Ruby - %td.ws no + %td.async thread-safe Ruby %tr.comp_row %td.mod EventMachine %td.devfd Yes %td.app_pool no-op %td.lock no-op %td.async async_sinatra, Cramp, rack-fiber_pool - %td.ws no %tr.comp_row %td.mod CoolioThreadSpawn %td.devfd Yes %td.app_pool Yes %td.lock Dumb - %td.async standard Ruby - %td.ws no + %td.async thread-safe Ruby %tr.comp_row %td.mod FiberSpawn %td.devfd Yes %td.app_pool Yes %td.lock No! %td.async Rainbows::Fiber::IO, Rainbows.sleep - %td.ws no %tr.comp_row %td.mod FiberPool %td.devfd Yes %td.app_pool Yes %td.lock No! %td.async Rainbows::Fiber::IO, Rainbows.sleep - %td.ws no %tr.comp_row %td.mod ActorSpawn %td.devfd no-op %td.app_pool Yes %td.lock Yes - %td.async standard Ruby - %td.ws no + %td.async thread-safe Ruby %tr.comp_row %td.mod NeverBlock %td.devfd Yes %td.app_pool Yes* %td.lock Yes* %td.async NeverBlock, async_sinatra - %td.ws no %tr.comp_row %td.mod CoolioThreadPool %td.devfd Yes %td.app_pool Yes %td.lock Dumb - %td.async Coolio, standard Ruby - %td.ws no + %td.async Coolio, thread-safe Ruby %tr.comp_row %td.mod CoolioFiberSpawn %td.devfd Yes @@ -384,29 +395,37 @@ %td.devfd Yes %td.app_pool no-op %td.lock no-op - %td.async Standard Ruby in response body only - %td.ws response body only + %td.async thread-safe Ruby in response body only %tr.comp_row %td.mod WriterThreadSpawn %td.devfd Yes %td.app_pool no-op %td.lock no-op - %td.async Standard Ruby in response body only - %td.ws response body only + %td.async thread-safe Ruby in response body only %tr.comp_row %td.mod Epoll %td.devfd Yes %td.app_pool no-op %td.lock no-op %td.async DevFdResponse - %td.ws no %tr.comp_row %td.mod XEpoll %td.devfd Yes %td.app_pool no-op %td.lock no-op %td.async DevFdResponse - %td.ws no + %tr.comp_row + %td.mod XEpollThreadPool + %td.devfd Yes + %td.app_pool Yes + %td.lock Yes + %td.async thread-safe Ruby + %tr.comp_row + %td.mod XEpollThreadSpawn + %td.devfd Yes + %td.app_pool Yes + %td.lock Yes + %td.async thread-safe Ruby %ul %li "No!" means it's fundamentally incompatible, use an diff --git a/README b/README index e6de8ce..6799530 100644 --- a/README +++ b/README @@ -22,18 +22,22 @@ suck; differently. For network concurrency, models we currently support are: * {Coolio}[link:Rainbows/Coolio.html] +* {CoolioFiberSpawn}[link:Rainbows/CoolioFiberSpawn.html] +* {CoolioThreadPool}[link:Rainbows/CoolioThreadPool.html] +* {CoolioThreadSpawn}[link:Rainbows/CoolioThreadSpawn.html] +* {Epoll}[link:Rainbows/Epoll.html] * {EventMachine}[link:Rainbows/EventMachine.html] -* {FiberSpawn}[link:Rainbows/FiberSpawn.html] * {FiberPool}[link:Rainbows/FiberPool.html] +* {FiberSpawn}[link:Rainbows/FiberSpawn.html] * {NeverBlock}[link:Rainbows/NeverBlock.html] * {Revactor}[link:Rainbows/Revactor.html] * {ThreadPool}[link:Rainbows/ThreadPool.html] * {ThreadSpawn}[link:Rainbows/ThreadSpawn.html] * {WriterThreadPool}[link:Rainbows/WriterThreadPool.html] * {WriterThreadSpawn}[link:Rainbows/WriterThreadSpawn.html] -* {CoolioFiberSpawn}[link:Rainbows/CoolioFiberSpawn.html] -* {CoolioThreadPool}[link:Rainbows/CoolioThreadPool.html] -* {CoolioThreadSpawn}[link:Rainbows/CoolioThreadSpawn.html] +* {XEpoll}[link:Rainbows/XEpoll.html] +* {XEpollThreadPool}[link:Rainbows/XEpollThreadPool.html] +* {XEpollThreadSpawn}[link:Rainbows/XEpollThreadSpawn.html] We have {many more on the way}[link:TODO.html] for handling network concurrency. Additionally, we also use multiple processes (managed by -- cgit v1.2.3-24-ge0c7