P. Oscar Boykin wrote:
Thanks for your reply.  Some more below...

On 5/8/06, Robert Jordan <[EMAIL PROTECTED]> wrote:

P. Oscar Boykin wrote:
> If anyone else has some good pointers on how to use one socket to send
and
> receive without polling or using the asynchronous methods I would be
happy
> to learn of them (polling introduces latency and the asynchronous
methods
> often lead to deadlocks I guess due to their internal use of
threadpools).

Supposing the reads & writes are highly interdependent, using
asynchronous methods is the fastest way. Having separate threads
for reading and writing needs thread synchronization and leads
to a context switch.

The async methods used by the Socket class are handled differently
by the runtime. They are not invoked from the generic TP. The Socket
IO is handled by a specialized thread using AIO APIs.


Is this really true?  I assume you mean posix aio methods?  When I look in
the mono source I can't find where this is happening.  Am I missing it?  It
appeared to me that the asynchronous methods were being implemented with
threading in mono and the standard synchronous socket calls.

See mono/metadata/threadpool.c

The Socket class' async delegates are detected with socket_io_filter ()
and queued with socket_io_add (). The IO worker thread is
async_invoke_thread ().


Can you provide a reference (file names/line numbers) for the aio code in
mono?

Sorry, actually I meant Linux AIO. The code is in
mono/metadata/threadpool.c

Robert

_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to