[Mono-dev] Question about NetworkStream.BeginRead
pablosantosluac at terra.es
pablosantosluac at terra.es
Fri Mar 16 15:57:37 UTC 2012
Hi,
I'm working on some changes to make the TcpChannel work in async mode.
Instead of changing all the reads and writes to async, I'm just
modifying the intial message status read to async, so instead of having
a pile of threads waiting for IO on the server (waiting for clients to
call or disconnect), there will be only as few threads as running methods.
It works great on Windows even under huge load (I'm testing on a
100-nodes cluster on EC2).
But, now, trying on Linux simply fails because this call:
networkStream.BeginRead(buffer, 0, 6, callback, null);
where networkStream is System.Net.Sockets.NetworkStream
locks.
What it actually does is to block and then invoke the callback, but it
doesn't go through until the callback finishes, which I think is not the
desired behavior.
I'm running:
Mono JIT compiler version 2.10.2 (tarball Mon Apr 18 15:12:52 UTC 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: debugger softdebug
LLVM: yes(2.9svn-mono)
GC: Included Boehm (with typed GC and Parallel Mark)
It fails with older monos too.
Obviously I'm doing something wrong.
Is there a way I can fix it?
Thanks,
pablo
More information about the Mono-devel-list
mailing list