[racket] Problems trying to do non-blocking I/O and a reactor loop
I see that you're using `read-bytes-avail!-evt', which has problems in
v5.2.1 that are fixed for v5.3. The problems include triggering a bug
in `sync', which is also fixed for v5.3.
Does a nightly build behave any differently?
At Fri, 3 Aug 2012 19:11:44 -0400, Greg Hendershott wrote:
> Even the distilled code is maybe a wee bit long for here, so I made a gist:
> https://gist.github.com/3252353
>
> I wanted to try doing non-blocking I/O and a reactor event loop.
>
> The gist is an excerpt to simplify the problem case. What I left out
> is the fun stuff where Racket could make this less painful, such as
> using continuations or simply generators to avoid
> nested-callback-chain heck. But before the fun stuff, the foundation:
>
> Under a light load everything works fine. But ApacheBench with -c > 2
> is making it unhappy, as described in the comments.
>
> Sometimes it will blow through 10,000 reqs at -c 20 with no problem.
> And giving at least 2X better reqs/sec than comparable
> thread-per-connection example. Yay!
>
> But on most runs it's getting errors with "input port closed". And
> rarely I will get a channel? from sync when it should only be an
> eof-object? or integer. And rarely I even get a Racket seg fault.
> Boo!
>
> So. Probably I'm doing one or more really stupid things? Any advice
> would be welcome -- thank you!
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users